Java的List怎么排序啊?
发布网友
发布时间:2022-04-22 22:41
我来回答
共4个回答
热心网友
时间:2022-04-22 11:45
用Collections.sort就可以排序,
里面的排序是默认的按自然顺序排列
也就是1,2,3,4这种
参数要求实现了Comparable的数据才能排序,
如果你自己写的类,你就要实现Comparable接口,然后在接口里面自动生成的方法里面
指定排序方法,一般的String Inteneger类都是实现了这个接口的 不用自己操作的。
你可以取看源代码
热心网友
时间:2022-04-22 13:03
java的集合排序可以这样做:
(1)新建排序规则
package com.test;
import java.util.Comparator;
/**
* @作者 王建明
* @创建日期 13-10-18
* @创建时间 下午9:40
* @版本号 V 1.0
*/
public class ComparatorNumber implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Number num1 = (Number) o1;
Number num2 = (Number) o2;
if (num1.equals(num2))
return 0;
else if (num1.doubleValue() > num2.doubleValue())
return 1;
else
return -1;
}
}
(2)利用排序规则进行排序
package com.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @作者 王建明
* @创建日期 13-10-18
* @创建时间 下午9:37
* @版本号 V 1.0
*/
public class SortTest {
public static void main(String[] args) {
List<Number> a = new ArrayList<Number>();
a.add(1);
a.add(6);
a.add(3.0);
a.add(8);
a.add(3.2);
a.add(4);
a.add(6.9);
ComparatorNumber comparatorNumber = new ComparatorNumber();
Collections.sort(a, comparatorNumber);
for (Object o : a) {
System.out.println(o);
}
}
}
结果如下:
1
3.0
3.2
4
6
6.9
8
追问3q 出来了,好高端的算法啊,Comparator这是一个接口吗?
Number num1 = (Number) o1;
Number num2 = (Number) o2;
这两句o1传过来的是一个列表,02是一个类的实例,怎么能比较是否相等呢
感觉没有地方调用compare()函数,返回值是给哪个啊,1,0,-1分别起什么作用啊
好复杂……
追答这是java内置的比较接口,在使用Collections.sort(a, comparatorNumber);的时候java会自动调用所写的比较方法进行数据的比较排序的,此方法不仅用于数字的排序,也可用于字符串的排序,字符串排序时比较可用str1.compareTo(str2)的方式得到比较结果。
1,0,-1其实是比较结果的一个标识【也可用大于0或小于0的其他数值返回】,0表示比较结果是两个内容是一样的,大于0的结果则表示前者大于后者,而小于0的数字则表示后者大于前者
热心网友
时间:2022-04-22 14:38
问题在于
double temp =0.0;
你把temp设置成double型,然后
temp =arr.get(l).doubleValue();
所以你把取得的int类型转换成了double类型,最后输出就带上了.0
你仔细看看你的程序,int类型有的排序后没有变,有的变x.0了,凡是加上.0的都是它在排序过程中与double类型的数字进行过交换。
追问你说的我试过,但是你把temp定义成int后,在交换就会失值,比如里面的3.2赋给temp时它就变成了3了
追答
你把
double temp =0.0;
换成下面这个,用Number类型做过度元素就可以了
Number temp = null;
最后再把
temp =arr.get(l).doubleValue();
改成
temp = arr.get(l);
最后输出结果就满足要求了!
热心网友
时间:2022-04-22 16:29
先转成数组,在调用Arrays.sort();