Java中treeset怎么对字符串排序,对整形数值进行排序可以按照从小到大排序,若是对字符串排序该怎么排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中treeset怎么对字符串排序,对整形数值进行排序可以按照从小到大排序,若是对字符串排序该怎么排序相关的知识,希望对你有一定的参考价值。

例:
对加入 TreeSet的Student对象   实现Comparable接口,通过在Student中重写compareTo()方法确定该对象在TreeSet中的排序方式
Student类如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   
class Student implements Comparable
 
private int age;
 
//重写compareTo()方法
 
public int compareTo(Object o)
 
Student s = (Student) o;
 
if (this.age < s.age )
 
return -1;
 
else if(s.age == this.age)
 
return 0;
 
else
 
return 1;
 

当Student对象加入TreeSet时,是按年龄从小到大排序的。
参考技术A String类的一个方法:compareTo(String str)功能按照字典顺序比较两个字符串追问

字典顺序是个神马?

追答

按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String
对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String
对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String
对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;
例如"f".compareTo("a")返回一个正整数,那么说明f位于a后

本回答被提问者采纳

用Java编程语言对一个无序整形数组进行排序(冒泡排序,选择排序,插入排序)

public static void main(String[] args) 
/**
* 冒泡排序
* 思路:每个轮次都让第一个数和其后所有的数进行轮比较,如果这轮的第一个数大则和其下一个数交换位置,如果他一直大则冒泡的最后一位
* 1、除了最后一位,前面的数都需要进行冒泡
* 2、第一轮,第一个数进行冒泡,和其后的数进行比较
* 3、第二轮,新序列的第一个数进行冒泡
*/

int[] ary=new int[]90,50,40,60,55;
//外层循环控制有多少个数需要比较的轮数,最原始最后一位数不需要冒泡,数组长度减一
for (int i=1;i<ary.length;i++)
//内层循环控制每个轮次的第一个数比较换位的过程
for (int j=0;j<ary.length-1;j++)
//如果这个轮次的第一个数大于其后的数就一直换位,直到比他大的数出现,不换位了,新的序列生成
if (ary[j]>ary[j+1])
int tmp;
tmp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=tmp;



//foreach()遍历输出
for (int i:ary)
System.out.print(i+"\\t");


运行结果:
技术图片

 

 public static void main(String[] args) 
/**
* 选择排序
* 思路:从剩余数组中选择最小的数并获取它的的下标,然后把最小的数与剩余数组的第一个数进行交换位置
*/

int[] ary=new int[]90,50,40,60,55;
//外层循环表示从剩余数组寻找最小值的轮数,数组长度为5的话,寻找4轮
for (int i=0;i<ary.length-1;i++)
//假定的最小值的下标,第一轮为ary[0],每次为剩余数组的第一个数
int minindex=i;
//j=i表示从剩余数组中查找最小数的下标
for (int j=i;j<ary.length;j++)
//如果假定的最小值大于其后的数,则更换下标
if (ary[minindex]>ary[j])
minindex=j;


if (ary[i]!=ary[minindex])
int tmp;
tmp=ary[i];
ary[i]=ary[minindex];
ary[minindex]=tmp;


//foreach()遍历输出
for (int a:ary)
System.out.print(a+"\\t");


运行结果:

技术图片


    public static void main(String[] args) 
/**
* 插入排序
* 思路:第一轮,先把第一个数当成一个有序数组,把剩余的数从第一个开始逐个往假定的有序数组中插入,插入后还是有序的,
*/
int[] ary=new int[]50,30,40,10,20;
//错误思路
// for (int i=1;i<5;i++)
// for (int j=0;j<i;j++)
// if (ary[j]>ary[i])
// int t;
// t=ary[j];
// ary[j]=ary[i];
// ary[i]=t;
//
//
//
for (int i=1;i<5;i++)
int tmp=ary[i];
int j;
//i代表假定的有序数组的长度,i-1代表有序数组的最后一位的下标
for ( j=i-1;j>=0;j--)
//如果有序数组中的数大于待插入的数,则此数和其后的数都向后移动一位
if (ary[j]>tmp)
ary[j+1]=ary[j];
else
break;


//循环结束后,插入待插入的数,这个时候j的值是-1或者是有序数组中比待插入数小的数的下标,不加1的话会插错位置,所以j要加1
ary[j+1]=tmp;


//使用Arrays工具类对数组排序
Arrays.sort(ary);
//foreach()遍历输出
for(int a:ary)
System.out.print(a+"\\t");


运行结果:
技术图片

 

 


以上是关于Java中treeset怎么对字符串排序,对整形数值进行排序可以按照从小到大排序,若是对字符串排序该怎么排序的主要内容,如果未能解决你的问题,请参考以下文章

java中的treeSet中文排序

Java基础

JAVA-初步认识-常用对象API(集合框架-treeset集合-二叉树)

java 如何对对象进行排序

java 17 -7 TreeSet元素排序规则的案例

《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解