lambda 让你的代码更简洁,更容易理解

lambda 让你的代码更简洁,更容易理解

相信想了解lambda的小伙伴们已经知道什么是lambda了,在这我就不详细说了,毕竟这是我第一次写博客,写的不好希望大家体谅!
以下都是我在项目实践中写过的lambda。都是通过map的键来获取它的值,所以我很少写对象类= =不要学我哦~~~嘿嘿嘿,废话不多说直接上代码**

根据datatype分组 以datatype为键,集合为值得map集合

 Map<String, List<Map<String, Object>>> map = video.stream().filter(o -> name.equals(o.get("datatype"))).collect(Collectors.groupingBy(a -> String.valueOf(a.get("datatype"))));

获取最大值

OptionalDouble staYl = selectList.stream().filter(o -> name.substring(0,2).equals(String.valueOf(o.get("country")).substring(0, 2))).mapToDouble(b -> Double.parseDouble(String.valueOf(b.get("maxwindv")))).max();
     if (!staYl.isEmpty()) {
           value = staYl.getAsDouble();
         }

去重

List<Object> groupNames = lst.stream().map(o -> o.get("groupName")).distinct().collect(Collectors.toList());

对象排序

Collections.sort(stabasicatt_qxgczList, (o1, o2) -> {
            Integer time1 = Integer.valueOf(o1.get("time").toString().substring(0,o1.get("time").toString().indexOf(":")));
            Integer time2 = Integer.valueOf(o2.get("time").toString().substring(0,o2.get("time").toString().indexOf(":")));
            return time1.compareTo(time2);
        });

基本数据类型排序(<为降序 >为升序)

Collections.sort(staLst, (o1, o2) -> {
            double num1 = Double.parseDouble(String.valueOf(o1.get("yl")));
            double num2 = Double.parseDouble(String.valueOf(o2.get("yl")));
            if (num1 < num2) {
                return 1;
            } else if (num1 == num2) {
                return 0;
            }
            return -1;
        });

过滤时间

selectedList.addAll(stabasicatt_rains.stream().filter(o -> {
            try {
                String time = String.valueOf(o.get("tm"));
                Date tim = df.parse(time);
                return tim.compareTo(startTime) >= 0 && tim.compareTo(endTime) <= 0;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        }).collect(Collectors.toList()));

将字段转化为集合

List<Map<String, Object>> collect = stabasicatt_qxgczs.stream().filter(o -> name.equals(o.get("district"))).collect(Collectors.toList());

总和

double staYl = selectedList.stream().filter(o ->  mgstcd.equals(o.get("mgstcd"))) .mapToDouble(b -> Double.parseDouble(String.valueOf(b.get("val")))).sum();

map遍历

map.forEach((k,v)->{
....
})

list遍历

list.forEach(item->{
....    
})

list转map

list.stream().collect(Collectors.toMap(User::getName, a -> a, (k1, k2) -> k1));

map转list

map.entrySet().stream().map(et -> et.getKey() + "_" + et.getValue()).collect(Collectors.toList());

lambda遍历比通常的遍历效率要低哦!

好吧就到这个,可能有地方不是特别严谨,希望大家能评论指出哦,谢谢大家支持。下次见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值