有时候我们需要将List中的某些属性转为一个map集合,在java8中提供了流式编程函数可以为我们非常方便的达到目的。 目录 1、创建测试类 2、构造测试数据 3、三种
有时候我们需要将List中的某些属性转为一个map集合,在java8中提供了流式编程函数可以为我们非常方便的达到目的。
目录
1、创建测试类
2、构造测试数据
3、三种方法介绍
(1)第一种:
(2)第二种:
(3)第三种:
1、创建测试类
package com.example.demo.csdn;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
}
2、构造测试数据
List<User> users = new ArrayList<>();User admin1 = new User(1, "admin1", "123456");
User admin2 = new User(2, "admin2", "123456");
User admin3 = new User(3, "admin3", "123456");
users.add(admin1);
users.add(admin2);
users.add(admin3);
3、三种方法介绍
(1)第一种:
User -> User:返回对象本身
Map<Integer, User> map1 = users.stream().collect(Collectors.toMap(User::getId, User -> User));System.out.println(map1);
程序运行结果:
(2)第二种:
Map<Integer, User> map2 = users.stream().collect(Collectors.toMap(User::getId, Function.identity()));程序运行结果:
Function.identity():Function.identity()是简洁写法,也是返回当前对象
(3)第三种:
Function.identity(), (k1, k2) -> k2):Function.identity()是简洁写法,也是返回当前对象,key 冲突的解决办法,这里选择第二个key覆盖第一个key。
System.out.println(map3);
程序运行结果: