Java8 Lambda表达式运用集锦

项目中运用到的Lambda表达式,简化了Java8以前的写法,包含了循环、判断、求和、分组等。边学边做,记录如下:

1、计算JSON字符串中value的sum值(map)

public static void main(String[] args) {
    String test = "{\"0\":4,\"1\":1,\"2\":105,\"3\":135,\"4\":132,\"5\":6,\"6\":0}";
    Map<Integer, Integer> map = JSON.parseObject(test, Map.class);
    Integer sum = map.values()
            .stream()
            .reduce(Integer::sum)
            .orElse(0);
    System.out.println(sum);
}

2、在List<Dto>中过滤某个指定key的数据(filter)

Java8之前要先循环列表,然后再list.contains()

public class DeviceUserBaseLineDto{
    private String device_id;
    private String deviceUserDtoStr ;
}
public static void main(String[] args) {
    String deviceId = "123";
    List<DeviceUserBaseLineDto> collect = deviceUserBaseLineDtos
                    .stream()
                    .filter(a ->deviceId.equals(a.getDevice_id())).collect(Collectors.toList());
//此处a->后可以多条件

    String deviceUserDtoStr = collect.get(0).getDeviceUserDtoStr();
}

3、提取List<Dto>中的某个属性成集合

//从对象列表中提取一列(以name为例)
List<String> nameList = userList.stream().map(UserInfo::getName).collect(Collectors.toList());
//提取后输出name
nameList.forEach(s-> System.out.println(s));

4、key=value数组转Map

String[] array = ["startTime"="2018-10-13 14:14:14","endTime"="2018-10-13 14:14:14"];
        Map<String, Object> kvs = new HashMap<>();
        Arrays.asList(array).stream().map(elem -> elem.split("=")).forEach(elem -> kvs.put(elem[0], elem[1]));

Ps:在Idea中对Lambda表达式进行Debug调试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值