java List实体排序
来源:互联网 发布:mac编辑图片怎么保存 编辑:程序博客网 时间:2024/06/15 17:32
对于java实体集合排序这里总结了三种方法,第一种是通过原生支持的Comparator做排序,第二种是通过java8的Lambda表达式进行排序,第三种是使用apache-common的工具包进行排序。经测试都能达到想要的效果,相比而言,第三种代码可读性、易用性更强,推荐使用第三种。
第三种排序需要引入Apache-common的beanutils、collections包,maven如下
<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.2</version></dependency><dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version></dependency>
代码
public class TestCollections { private List<Map<String, Object>> getDataList() { Map<String, Object> map1 = new HashMap<>(3); map1.put("id", 2); map1.put("name", "小明"); Map<String, Object> map2 = new HashMap<>(3); map2.put("id", 1); map2.put("name", "小张"); Map<String, Object> map3 = new HashMap<>(3); map3.put("id", 3); map3.put("name", "小红"); List<Map<String, Object>> dataList = new ArrayList<>(); dataList.add(map1); dataList.add(map2); dataList.add(map3); return dataList; } @Test public void sort() { List<Map<String, Object>> dataList = getDataList(); System.out.println("排序前:" + dataList); // 第一种 Collections 进行降序排序 Collections.sort(dataList, new Comparator<Map>() { @Override public int compare(Map o1, Map o2) { int id1 = Integer.parseInt(o1.get("id").toString()); int id2 = Integer.parseInt(o2.get("id").toString()); //按照id进行降序排列 return id2 - id1; } }); System.out.println("Collections降序排序后:" + dataList); // 第二种 java8 Lambda表达式 进行正序排序 dataList = getDataList(); dataList.sort((Map o1, Map o2) -> { int id1 = Integer.parseInt(o1.get("id").toString()); int id2 = Integer.parseInt(o2.get("id").toString()); return id1 - id2; }); System.out.println("Lambda正序排序后:" + dataList); // 第三种 工具包 进行降序排序 dataList = getDataList(); Comparator mycmp1 = ComparableComparator.getInstance(); //逆序 mycmp1 = ComparatorUtils.reversedComparator(mycmp1); ArrayList<Object> sortFields = new ArrayList<>(); //主排序(第一排序) sortFields.add(new BeanComparator("id", mycmp1)); // 创建一个排序链 ComparatorChain multiSort = new ComparatorChain(sortFields); // 开始真正的排序,按照先主,后副的规则 Collections.sort(dataList, multiSort); System.out.println("工具包降序排序后:" + dataList); }}
运行结果
排序前:[{name=小明, id=2}, {name=小张, id=1}, {name=小红, id=3}]Collections降序排序后:[{name=小红, id=3}, {name=小明, id=2}, {name=小张, id=1}]Lambda正序排序后:[{name=小张, id=1}, {name=小明, id=2}, {name=小红, id=3}]工具包降序排序后:[{name=小红, id=3}, {name=小明, id=2}, {name=小张, id=1}]
阅读全文
0 0
- java List实体排序
- Java List实体类去重
- List实体列表排序Sort
- Java中集合List按照集合内实体类元素的指定字段排序方法
- java 实体类集合排序
- java list排序 -List.stream()
- Java 如何将List<实体类> 转为List<Object>类型
- Java实现List<Object>转List<实体类>
- JAVA List 排序 冒泡排序
- android中对List中实体的排序
- Android 对List中的实体的某一项排序
- 对list中的实体类或map重新排序
- list 排序java代码
- list 排序java代码
- Java List 排序
- java list排序
- java list排序
- Android Java List 排序
- 事件委托
- 计算火车运行时间(c语言)
- 北大oj&派&浮点数二分
- 八种排序方法(六)——堆排序
- 培训第十天 部分关键字及内部类
- java List实体排序
- C语言跳转语句
- 获取本地歌曲信息的方法
- leetcode 538. Convert BST to Greater Tree 后序遍历的一个应用
- RDD常用操作
- Base64是什么
- pthon6个必要库
- 蓝桥杯 基础练习 字母图形
- 好书推荐《蚀心者》(剧透高能预警)