List<Person> list = new ArrayList<>();
1.对象中的属性转map 通过Collectors.toMap
list.stream().collect(Collectors.toMap(Person::getId,Person::getName));
2.收集对象本身
list.stream().collect(Collectors.toMap(Person::getId,list->list));
list->list 是一个返回本身的lambda表达式,还可以用function接口中的一个默认方法Function.identity(),返回对象本身
list.stream().collect(Collectors.toMap(Person::getId,Function.identity()));
3.key重复的情况,key有可能重复,会跑出异常:java.lang.illegalStateException:Duplicate key.这时候就要在toMap
方法指定当前key冲突时key的选择,这里时第二个key覆盖第一个key
list.stream().collect(Collectors.toMap(Person::getName,Function.identity(),(key1,key2)->key2));
4.根据一个字段或者属性分组也可以直接用groupingby方法
list.list(100).collect(Collectors.groupingBy(Person::getAge));
通过partitioningBy 进行分组
list.limit(100).collect(Collectors.partitioningBy(p-P.getAge()<18));