java 8 stream list 对象 转map


 
 
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));

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM