问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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();
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cpa改分电话可信吗 有人今年收到这样的短信吗? 温馨提示 通知:你此次报考的湖南中级会 ...会计从业资格证,今天有陌生号码打电话说我没过,是真的吗?我都考三... 坠入星河的温柔仙句 惊艳所有人的优美文案 坠入星河的温柔仙句 温柔很仙的宝藏文案 温柔到心坎里的文案句子(温柔且治愈的短句子) 实习期劳务合同简易版 ...企业受伤,如果辞职是否还有补偿?医疗费谁出? 毛晓彤十大经典电视剧 这个锦尚天舞舞蹈里面的音乐是什么?急求 http://m.iqiyi.com/w_19rr... c# 中 list&lt;A&gt; A 是对象包含三个字段 开始时间,结束时间 ,文本 现在想对list&lt;A&gt;进行排序 datalist中按时间排序的方法求指点? java list&lt;实体&gt; 集合排序问题 根据实体的 time属性,降序排列(距离现在时间越短,越靠前) 两个list, List&lt;User&gt;, List&lt;People&gt;,都有一个时间字段,怎样把两个List内容按时间排序放到一个新的List JAVA实现两个时间list时间段的排列。现在有2个list,list1是开始时间,list2是结 怎样按日期排序LIST集合 List&lt;WorkItem&gt; newResult=new ArrayList&lt;WorkItem&gt;(); 把数据装进list集合后,如何按时间排序,取前10条 C# list&lt;string&gt; 存储的日期信息怎么按时间排序 别人知道我的可以登录我的微信吗? 可你注销吗 可不可以改,怎么改 我的能给别人吗? NEM一TL00,是华为什么型号的手机? 可以关联吗 用可以登录微信吗 微信可以用几个 可以和qq号一样的吗? 可以修改吗? 可更改吗? 可以出租吗? java中list排序 两个list列表排序的问题 C#:怎样对dataList表格中的行数据按时间降序排列 求一个java List排序 动态产生一个List【100000】,调用时间函数,测试所有的排序方法,找出最快的排序方法 .net如何从一个list集合中去重排排序 如何对List集合中的数据进行排列 java 怎么将List里面数据排序 c# BindingList或者IList怎么排序(linq) Java:自定义一个顺序,然后对List按照该顺序排序。。 Java List&lt;Object&gt; 根据Object中channelTime字段从小到大排序,并输出最终的List&lt;Object&gt; 广州共有产权房申请条件是什么 共有产权房申请需要哪些条件? 共有产权房基本特征是什么共有产权住房的申请条件有哪些 共有产权房的申请条件是什么? 共有产权房申请需要什么条件? 共有产权房购买需要的条件是什么? 广州推出共有产权住房1366套,你知道什么叫共有产权吗? 广州申请公租房需要什么条件 什么是共有产权住房,它的申请条件是什么?