Lambda常用排序、分组

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();
        }));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值