List<String>排序
// 定义初始变量
List<String> list = Arrays.asList("1","12","115","15");
// 默认排序
List<String> collect = list.stream().sorted().collect(Collectors.toList());
collect.forEach(System.out::println);
// 结果 1,115,12,15
// 自定义排序
List<String> collect1 = list.stream().sorted((v1,v2)->{
if(Integer.valueOf(v1)>=Integer.valueOf(v2)){
return 1;
}
return -1;
}).collect(Collectors.toList());
collect1.forEach(System.out::println);
// 结果 1,12,15,115
List<JSONObject>排序
List<JSONObject> list = new ArrayList<>();
// 添加JSONObject元素到list中
// 方法一:
Collections.sort(list, (o1, o2) -> {
// 根据需要的排序逻辑,比较o1和o2的大小
// 返回一个负数表示o1小于o2,返回0表示o1等于o2,返回一个正数表示o1大于o2
});
// 方法二:
result.sort((o1, o2) -> {
});
// 排序后的list
System.out.println(list);
// 举例
List<JSONObject> list=new ArrayList<>();
for (int i = 0; i < 10; i++) {
JSONObject jsonObject=new JSONObject();
jsonObject.put("name","name"+i);
jsonObject.put("age",i);
list.add(jsonObject);
}
Collections.sort(list,(o1,o2)->{
return Integer.parseInt(o2.get("age").toString())-Integer.parseInt(o1.get("age").toString());
});
list.forEach(System.out::println);
// 关于排序顺序和非正常数据排序可以按照以下规则:
// 1.永远使用o1.compareTo(o2),顺序是从小到大,升序。
// 2.特殊值放最后,o1返回 1 , o2返回-1。
// 3.如果想降序,return加负号。
// 4.特殊值想放最前面,o1返回-1,o2返回1。
result.sort((o1, o2) -> {
if(o1.getLevel()==null){
return 1;
}
if(o2.getLevel()==null){
return -1;
}
return o1.getLevel().compareTo(o2.getLevel());
});
List<User> 排序
通上与List<JSONObject>排序方式一致。
List转Map分组
Map<String, List<User>> mapList = list.stream().collect(Collectors.groupingBy(User::getName));
List转Map(多个属性)分组
Map<String, List<User>> all = userKdws.stream().collect(Collectors.groupingBy(v -> {
return v.getName() + v.getAge() + v.getNickName();
}));