Loading

java List转Map的三种方法(java8语法特性使用)

有时候我们需要将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。
        Map<Integer, User> map3 = users.stream().collect(Collectors.toMap(User::getId, Function.identity(), (k1, k2) -> k2));
        System.out.println(map3);

 程序运行结果:

posted @ 2021-12-22 11:05  Roc-xb  阅读(149)  评论(0)    收藏  举报

易微帮源码


易微帮官网