Java-Stream map 映射元素

map 方法用于映射元素,且映射时可加入计算逻辑


一、List map映射一个字段,转为新List

List<userInfo> userList = new ArrayList<>();
// userInfo字段 
UserId;    Age;    NickName;     Sex 1:2:女 ;     Money BigDecimal
userList.add(new userInfo(1,22,"小明",1,new BigDecimal("11")));
userList.add(new userInfo(2,22,"小红",2,new BigDecimal("22")));
userList.add(new userInfo(3,24,"小张",1,new BigDecimal("33")));

List<String> nickNameList = userList.stream().map(userInfo::getNickName).collect(Collectors.toList());

二、map映射字段 类型转换

1) Integer 转 String

List<Integer> integers = Arrays.asList(1, 2, 3, 4);
List<String> filter1 = integers.stream().map(s -> s.toString()).collect(Collectors.toList());

List<String> UserIdList = userList.stream().map(userInfo::getUserId).map(s -> s.toString()).collect(Collectors.toList());

2) String 转 Long

List<String> integers = Arrays.asList("1", "2", "3", "4");
List<Long> filter1 = integers.stream().map(s -> Long.parseLong(s)).collect(Collectors.toList());

三、map映射字段逻辑计算

1) 求和

BigDecimal 求和 add

 BigDecimal sum = userList.stream().map(userInfo::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add);

说明:BigDecimal::multiply 乘法 BigDecimal::max 等


Int, Long, Double 求和 sum //mapToInt mapToLong mapToDouble

 int sumAge = userList.stream().mapToInt(userInfo::getAge).sum();

2) 平均值

Double filter1 = integers.stream().mapToInt(s -> s).average().getAsDouble();

3) 最大值

Integer filter2 = integers.stream().mapToInt(s -> s).max().getAsInt();
BigDecimal sum = userList.stream().map(userInfo::getMoney).reduce(BigDecimal.ZERO,BigDecimal::max);

在这里插入图片描述

posted @ 2020-04-03 10:18  预立科技  阅读(52)  评论(0编辑  收藏  举报