List stream 转Map

java8 stream API学习笔记

关于list转map demo,如下: ↓↓↓

//3个Users对象
Users users0 = new Users("0", "tom", 12);
Users users1 = new Users("1", "jerry", 11);
Users users2 = new Users("2", "superman", 12);

//users 加入示例 list
List<Users> list = new ArrayList<>();
list.add(users0);
list.add(users1);
list.add(users2);

//将list转成map key:users.id value:users.age
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Users::getId, Users::getAge));

//将list转成map key:users.id value:users对象
//第一种 直接返回users本身
Map<String, Users> map0 = list.stream().collect(Collectors.toMap(Users::getId, users -> users));

//将list转成map key:users.id value:users对象
//第二种 Function中有一个static方法identity 返回本身
Map<String, Users> map1 = list.stream().collect(Collectors.toMap(Users::getId, Function.identity()));

//将list转成map key:users.age value:users对象
//如果list中的age存在相同的时候,转化map的时候就会出错Duplicate key
Map<Integer, Users> map2 = list.stream().collect(Collectors.toMap(Users::getAge, Function.identity()));
//toMap的重载,定义key2覆盖key1的值
Map<Integer, Users> map3 = list.stream().collect(Collectors.toMap(Users::getAge, Function.identity(),(key1,key2)->key2));

Users对象,只有3个字段

private String id;
private String name;
private Integer age;

Mark 2018-5-24: 今天我要辞职, f-ck,fu-k,f--k.

----------------------------------------------------------------------------------------------

猜你喜欢

转载自my.oschina.net/u/3829444/blog/1817991