Map<Long, User> map = userList.stream().collect(Collectors.toMap(User::getId, p -> p));这一步就是将userList 转换为key为id,value为User对象的map。 User::getId ===》 User对象的getId方法 p -> p ===》就是进来的是什么,最终就是什么,这里就是进来的是User对象,出去的也就是User...
userList.stream().collect(Collectors.toMap(User::getId, Function.identity())); 关于Collectors.toMap 方法 Collectors.toMap 有三个重载方法: toMap(Function<?superT, ?extendsK> keyMapper,Function<?superT, ?extendsU> valueMapper);toMap(Function<?superT, ?extendsK> keyMapper,Function<?superT, ?exte...
Collectors.toMap将List转为Map 定义 public final class Collectors { public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) { return toMap(keyMapper, valueMapper, throwingMerger(), HashMap::n...
toMap 使用示例package com.github.mouday.demo; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; public class Demo { public static void main(String[] args) { List<User> users = Arrays.asList( new ...
List.stream().collect(Collectors.toMap(Emp::getId, a->a,(k1,k2)->k2))的意义是:将链表里的元素转成Map,Map的键取元素的id,值就取元素本身,当键同值不同时取后来者。 例程: Emp类: publicclassEmp {privateString id;privateString name;publicEmp(String id,String name) {this.id=id;this.name=...
for (User user : userList) { map.put(user.getId(), user.getName()); } 使用Java8 特性 Java8 中新增了Stream特性,使得我们在处理集合操作时更方便了。 以上述例子为例,我们可以一句话搞定: userList.stream().collect(Collectors.toMap(User::getId, User::getName)); ...
情况1:使用toMap()生成的收集器,这种情况是最直接的,前面例子中已提到,这是和Collectors.toCollection()并列的方法。如下代码展示将学生列表转换成由<学生,GPA>组成的Map。非常直观,无需多言。 情况2:使用partitioningBy()生成的收集器,这种情况适用于将Stream中的元素依据某个二值逻辑(满足条件,或不满足)分成互补...
List转Map Map中key和value都是User对象中的属性值Map<String, String> userMap = users.stream().collect(Collectors.toMap(User::getId, User::getName));Map中key为User对象的属性值,value为User对象Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getId, User -> User));...
如果映射的键包含重复项(根据Object#equals(Object)),则执行收集操作时会引发一个IllegalStateException。 如果映射的键可能有重复项,请改用#toMap(Function, Function, BinaryOperator)。 无法保证返回的类型Map、可变性、可序列化性或线程安全性。 适用于 . 的java.util.stream.Collectors.toMap(java.util.function....
System.out.println(list); //将list转换map Map<String,String>map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName)); System.out.println(map); 1. 2. 3. 4. 5. 6. 7. 8. 9. 输出结果为: 注意:用Collectors的toMap方法转换List,一般会遇到两个问题。一个是转换map,ke...