Collections.sort()方法详解
是对数据进行排序的一个方法,根据指定比较器产生的顺序对指定列表进行排序。
- Collections.sort() 排序 (倒叙排序)
- 返回值:return a.compareTo(b) 就排序了,为什么呢?
- compareTo() 这个方法,它返回了3种int类型的值:
- 负整数 : a < b,位置排在前面
- 零 : a = b, 位置不变
- 正整数 : a > b, 位置排在后面
点击查看代码
public static <T> void sort(List<T> list, Comparator<? super T> c) {
list.sort(c);
}
参数说明:
- list : 要排序的list集合
- c : 确定列表数据的比较器
- T : 列表中对象的类型,可以是map,set,list,bean等,要保证集合中的对象是可以被比较的
使用demo
点击查看代码
public static void main(String[] args) {
List<Map<String, Object>> list = new ArrayList<>();
list.add(new HashMap<String, Object>(){{put("id",2);put("name", "bbb");put("chinese", "992");}});
list.add(new HashMap<String, Object>(){{put("id",3);put("name", "ccc");put("chinese", "993");}});
list.add(new HashMap<String, Object>(){{put("id",1);put("name", "aaa");put("chinese", "991");}});
list.add(new HashMap<String, Object>(){{put("id",4);put("name", "bbb");put("chinese", "994");}});
for (Map<String, Object> stringObjectMap : list) {
System.out.println("---map:" + stringObjectMap);
}
System.out.println("-----------------");
Collections.sort(list, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
String id2 = o2.get("id").toString();
String name2 = o2.get("name").toString();
String id1 = o1.get("id").toString();
String name1 = o1.get("name").toString();
// return id2.compareTo(id1);
return name2.compareTo(name1);
}
});
for (Map<String, Object> stringObjectMap : list) {
System.out.println("---map:" + stringObjectMap);
}
}
输出结果:
点击查看代码
Connected to the target VM, address: '127.0.0.1:56834', transport: 'socket'
---map:{chinese=992, name=bbb, id=2}
---map:{chinese=993, name=ccc, id=3}
---map:{chinese=991, name=aaa, id=1}
---map:{chinese=994, name=bbb, id=4}
-----------------
---map:{chinese=993, name=ccc, id=3}
---map:{chinese=992, name=bbb, id=2}
---map:{chinese=994, name=bbb, id=4}
---map:{chinese=991, name=aaa, id=1}
Disconnected from the target VM, address: '127.0.0.1:56834', transport: 'socket'