转载:
Stream的List转Map
https://blog.csdn.net/weixin_43076660/article/details/122767929
//测试user对象 @lombok.Data class User { private String id; private String name; }
//四个参数 toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier); //参数含义分别是: keyMapper:Key 的映射函数 valueMapper:Value 的映射函数 mergeFunction:当 Key 冲突时,调用的合并方法 mapSupplier:Map 构造器,在需要返回特定的 Map 时使用
List<User> userList = Lists.newArrayList( new User().setId("B").setName("张三"), new User().setId("A").setName("李四"), new User().setId("C").setName("王五") ); //类似这种,前两个参数是user对象中你想获取的两个值,如果值是user对象,那可以这样写 userList.stream().collect(Collectors.toMap(User::getId, t -> t)); //key值有冲突时,用第三个参数,第四个参数是排序 userList.stream().collect( Collectors.toMap(User::getId, User::getName, (n1, n2) -> n1, TreeMap::new) );