- 获取集合某字段
List<Long> ids = personList .stream().map(Person::getId).collect(Collectors.toList());
List<String> ids = personList .stream().map(t -> t.getId().toString()).collect(Collectors.toList());
- List<T>互转
List<String>转List<Long>:List<Long> newList = list.stream().map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());
- 单个字段分组
Map<String, List<Person>> personMap= personList .stream().collect(Collectors.groupingBy(Person::getAge));
LinkedHashMap<String, List<Person>> personMap= personList .stream().collect(Collectors.groupingBy(Person::getAge, LinkedHashMap::new, Collectors.toList()));
- 多个字段分组
Map<String, Map<String, List<Person>>> personMap = assetInvoiceInfos.stream().collect(Collectors.groupingBy(Person::getAge,Collectors.groupingBy(Person::getSex)));
取:List<Person> personList = personMap.get(person.getAge()).get(person.getSex());
- 过滤
List<Person> filterList = list.stream().filter(item -> item.getAge() > 2).collect(Collectors.toList());
- 取并
List<Person> personList = personList1.stream()
.filter(item -> personList2.stream().map(e -> e.getAge()).collect(Collectors.toList())
.contains(item.getAge())).collect(Collectors.toList());
- 筛选首条数据
Person person= personList .stream().filter(item -> 18.equals(item.getAge())).findFirst().orElse(null);
-
通过对象某属性值去重
List<Person> personList = personList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getAge))), ArrayList::new));
- 排序
//升序:personList.sort(Comparator.comparing(Person::getBirth, Comparator.nullsLast(Date::compareTo)));
//降序:personList.sorted(Comparator.comparing(Person::getBirth, Comparator.nullsLast(Date::compareTo)));
//以birth升序,如果birth相同再以age升序
personList.sort(Comparator.comparing(Person::getBirth, Comparator.nullsLast(Date::compareTo)).thenComparing(Person::getAge));