博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Collections对集合排序
阅读量:5977 次
发布时间:2019-06-20

本文共 2290 字,大约阅读时间需要 7 分钟。

hot3.png

使用Collections.sorted(list)和Collections.sorted(list,Comparator)对基础数据类型集合或对象集合排序。

Collections.sorted(list)默认是升序排序的,如果需要倒序排序,需要自定义Comparator比较器。且看示例如下:

//默认排序都是从小到大的顺序排序    //对数字排序    List list = Arrays.asList(5, 2, 9, 3);    System.out.println("源序列:"+list);    Collections.sort(list);    System.out.println("升序排列:"+list);    //对字符串    List strList = Arrays.asList("adf", "jjdjf", "iure", "jad", "gdss");    System.out.println("源序列:"+strList);    Collections.sort(strList);    System.out.println("顺序排序:"+strList);    //对字符串倒序排序,需要定义比较器    Collections.sort(strList, new Comparator
() { @Override public int compare(String o1, String o2) { return o2.compareTo(o1); } }); System.out.println("倒序:"+strList); //对对象按某个字段倒序排序,需要定义比较器 Map
map = new LinkedHashMap<>(); map.put("ab", 8.09); map.put("ann", 98.09); map.put("b", 55.09); map.put("cb", 7.09); map.put("ba", 98.09); //为了方便示例,这里将Map.Entry
看成一个对象类,按value值顺序排列 List orderList = new ArrayList
>(map.entrySet()); System.out.println("插入顺序:"+orderList); Collections.sort(orderList, new Comparator
>() { @Override public int compare(Map.Entry
o1, Map.Entry
o2) { return o1.getValue().compareTo(o2.getValue()); } }); System.out.println("升序排列:"+orderList);}

 

以上示例结果如下:

源序列:[5, 2, 9, 3]

升序排列:[2, 3, 5, 9]
源序列:[adf, jjdjf, iure, jad, gdss]
顺序排序:[adf, gdss, iure, jad, jjdjf]
倒序:[jjdjf, jad, iure, gdss, adf]
插入顺序:[ab=8.09, ann=98.09, b=55.09, cb=7.09, ba=98.09]
升序排列:[cb=7.09, ab=8.09, b=55.09, ann=98.09, ba=98.09]

当然是用java8的lambda表达式进行排序更简单:

List
strList = Arrays.asList("adf", "jjdjf", "iure", "jad", "gdss");System.out.println("源序列:" + strList);//对字符串使用java8新特性(lambda表达式)进行排序strList = strList.stream().sorted((a, b) -> a.compareTo(b)).collect(Collectors.toList());System.out.println("顺序排序:" + strList); //对字符串倒序排序,不需要定义比较器strList = strList.stream().sorted((a, b) -> b.compareTo(a)).collect(Collectors.toList());System.out.println("倒序:" + strList);

结果如下:

源序列:[adf, jjdjf, iure, jad, gdss]

顺序排序:[adf, gdss, iure, jad, jjdjf]
倒序:[jjdjf, jad, iure, gdss, adf]

顺便提一下:

HashMap是随机无序的,LinkedHashMap是维持插入顺序,TreeMap是默认按key升序排列

转载于:https://my.oschina.net/kevin2kelly/blog/869860

你可能感兴趣的文章
java替换特殊字符串
查看>>
12.10
查看>>
thinkphp几个表的数据合并,并用数组分页
查看>>
系统性能分析思路
查看>>
命令创建模型类
查看>>
poj 3258:River Hopscotch(二分)
查看>>
51nod 1836:战忽局的手段(期望)
查看>>
Python - - 项目实战 -- pygame 快速入门
查看>>
设置树莓派开机自动运行代码
查看>>
F - The Circumference of the Circle
查看>>
matlab练习程序(中值滤波)
查看>>
恋愛SLG-「猫セット」ゲットチャレンジ!
查看>>
OpenGL帧缓存对象(FBO:Frame Buffer Object)(转载)
查看>>
茶觉 | “治愈”的白牡丹
查看>>
JAVA学习笔记--初始化与清理
查看>>
hdu1789
查看>>
在EditText里插入图片,基于图库选择之后
查看>>
多输入的等价类划分以及测试
查看>>
3、编写一个prod()函数,可以接受一个list并利用reduce()求积
查看>>
mybatis_基础篇
查看>>