一、转换成Map
Map<String, TestJava8VO> map = list.stream().collect(Collectors.toMap(p -> p.getId(), p -> p));
二、转换成Map
Map<String, String> map = list.stream().collect(Collectors.toMap(p -> p.getId(), p -> p.getName()));
三、转换成Map
opList.stream().collect(Collectors.groupingBy(DeviceDto::getDeviceCode,Collectors.mapping(DeviceDto::getDeviceName,Collectors.toList())));
四、遍历集合list,根据某一字段的判断条件,获取符合条件的新集合
List<TestJava8VO> newList = list.stream().filter(vo -> vo.getSort() > 1).collect(Collectors.toList());
五、条件判断,生成新的List集合
List<String> idList = list.stream().filter(p->AssertUtil.isEmpty(p.getId())).map(p -> p.getId()).collect(Collectors.toList());
六、条件判断,生成新的Set集合
Set<String> idSet = list.stream().filter(p->AssertUtil.isEmpty(p.getId())).map(TestJava8VO :: getId).collect(Collectors.toSet());
七、排序,正序
list.sort(Comparator.comparing(TestJava8VO :: getSort));
八、排序,倒序
list.sort(Comparator.comparing(TestJava8VO :: getSort).reversed());
九、获取符合条件的元素对象,如果不存在返回null,用orElese
TestJava8VO vo = list.stream().filter(o -> o.getId() == "1").findAny().orElse(null); List<String> extraWbIds = Optional.ofNullable(SecurityUtils.getDsfUserEntity().getRoleAppMaps()).map(e ->e.get(RoleAppTypeEnum.WORKBENCH_APP)).orElse(Collections.emptyList());
十、遍历List,对某字段进行赋值
list.stream().filter(p->AssertUtil.isEmpty(p.getId())).forEach(s->s.setId("123"));
十一、分组 Collectors.groupingBy(属性名)
Map<Integer, List<TestJava8VO>> map3 = list.stream().collect(Collectors.groupingBy(TestJava8VO :: getSort)); Map<String, List<String>> addProjectMemberMap = addList.stream() .collect(Collectors.groupingBy(ResourceAuthSaveDTO::getProjectId, Collectors.mapping(ResourceAuthSaveDTO::getPrincipalId, Collectors.toList())));
十二、交集
List<String> list3 = list1.stream().filter(item -> list2.contains(item)).collect(toList());
十三、差集 (list1 - list2)
List<String> list3 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
十四、差集 (list2 - list1)
List<String> list3 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
十五、获取某一字段值最小的对象
TestJava8VO minSort = list.stream().min(Comparator.comparing(TestJava8VO :: getSort)).get();
十六、获取该集合list某一字段值的总和
mapToInt-》字段是int
mapToDouble-》字段是Double
sum()-》求和
max()-》最大值
min()-》最小值
average()-》平均值
int sum = list.stream().mapToInt(vo -> vo.getSort()).sum();
十七、根据某一属性去重方法
若使用以下方式,若map中的key有重复的,会报错
Map map = list.stream().collect(Collectors.toMap(p -> p.getId(), p -> p));
可改为
继续用旧的,旧的:vo1
Map pageDataMap = pageData.stream().collect(Collectors.toMap(TestJava8VO::getId, Function.identity(), (vo1, vo2) -> vo1));
用新的替代旧的, 新的:vo2
Map pageDataMap = pageData.stream().collect(Collectors.toMap(TestJava8VO::getId, Function.identity(), (vo1, vo2) -> vo2));
或者
userList = userList.stream().collect(Collectors.collectingAndThen (Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User :: getUserid))), ArrayList::new));
十八、按list集合中的某个属性分组,且有序,用LinkedHashMap
LinkedHashMap<String, List<ICBmEvaluationScore>> mapScore = icBmEvaluationScoreList.stream() .collect(Collectors.groupingBy(ICBmEvaluationScore::getEvaluationDetailNumber, LinkedHashMap::new, Collectors.toList()));