Bootstrap

java8 list stream流

1、给List<Map> 里面取出最小值最大值 返回某个字段

String dateMin = listMap.stream().min(Comparator.comparing(e->e.get("date "))).get().get("date ");
String dateMax= listMap.stream().max(Comparator.comparing(e -> e.get("date"))).get().get("date");

2、给List<Map> 里面取出最小值最大值 返回某个对象

Map  mapMin = listMap.stream().min(Comparator.comparing(e->e.get("date "))).get();
Map  mapMax= listMap.stream().max(Comparator.comparing(e -> e.get("date"))).get();

3、获取List<Map>里面等于某个值的数据量

long caseNum = caseAlls.stream().filter(e -> caseVo.getTitle().equals(e.get("title"))).count();

5、获取集合中的的某个属性去重返回这个属性

List<String> postNames = postList.stream().map(User::getName).collect(Collectors.toList()).stream().distinct().collect(Collectors.toList());
  // 根据 name 属性去重
        List<Person> distinctByName = personList.stream()
                .collect(Collectors.toMap(Person::getName, p -> p, (p1, p2) -> p1))
                .values()
                .stream()
                .collect(Collectors.toList());

6、根据集合中对象的id去重


// 根据id去重
List<User> unique = persons.stream().collect(
                collectingAndThen(
                        toCollection(() -> new TreeSet<>(comparingLong(User::getId))), ArrayList::new)
        );

List<User> disnProjects = projects.stream().filter(distinctByKey(User::getId)).collect(Collectors.toList());

6、根据条件然后给集合中一个或者多个属性去重

// 根据已知条件和 name 属性去重
List<Person> distinctByConditionAndProperty = personList.stream()
        .filter(person -> person.getAge() >= 18)  // 已知条件:年龄大于等于18
        .collect(Collectors.toMap(
                  Person::getName,
                  person -> person,
                  (existing, replacement) -> existing
         ))
         .values()
         .stream()
         .collect(Collectors.toList());

;