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);