数据源 数据处理 数据收集
List<Human> humans;
List<Animal> animals;
animals.stream().map(Animal::getId).collect(Collectors.toList());
map:在animals列表中 取Animal其中的Id字段作为一个新List
humans.stream().filter(d -> ids.contains(d.getId)).collect(Collectos.toList());
filter:过滤出 humans列表的Id 存在于ids列表的对象集合
humans.stream().filter(d -> d.getAge().compareTo(BigDecimal.ZERO) > 0).collect(Collectos.toList());
compareTo:过滤出 humans列表中 年龄大于0的对象集合
humans.stream().sorted(Comparator.comparing(Human::getAge)).collect(Collectors.toList());
sorted:根据年龄进行升序排序
humans.stream().sorted(Comparator.comparing(Human::getAge).reversed()).collect(Collectors.toList());
sorted:根据年龄进行降序排序
humans.stream().limit(1).collect(Collectors.toList());
limit:取一条数据
humans.stream().map(Human::getName).distinct().collect(Collectors.toList());
distinct:去除重复的name 。注意点:去重最好放好stream流操作后面,如果放一开始则寓意变成去除对象重复,而不是name重复
humans.stream().collect(Collectos.groupingBy(Human::getName));
groupingBy:对年龄进行分组
Map<String,BigDecimal> humanMap = humans.stream().collect(Collectos.groupingBy(Human::getName,Collectos.reducing(BigDecimal.ZERO,Human::getMoney,BigDecimal::add)));
groupingBy:对年龄进行分组后 对每个分组内的money进行求和
BigDecaimal totalPrice = list.stream().map(ProductA::getPrice).reduce(BigDecimal.ZERO,BigDecimal::add);
对Bigdecimal求和。 这里BigDecimal::add 可替换为min max
Human h = humans.stream().min(Comparator.comparing(Human::getAge)).get();
求Human列表中 age 最大的对象
humans.filter(Objects::nonNull) / humans.filter(d -> Objects::nonNull(d.getAge))
过滤为null的字段
humans.stream().map(e -> {
Women women = new Women();
women.setName(e.getName());
women.setAge(e.getAge);
return women;
}).collect(Collectors.toList());
自定义map返回的类型