Stream把List集合对象转化为Map方法

Function.identity()

Function是一个接口,那么Function.identity()是什么意思呢?解释如下:

Java 8允许在接口中加入具体方法。接口中的具体方法有两种,default方法和static方法,identity()就是Function接口的一个静态方法。
Function.identity()返回一个输出跟输入一样的Lambda表达式对象,等价于形如t -> t形式的Lambda表达式。

identity() 方法JDK源码如下:

static  Function identity() {
    
    
    return t -> t;
}

User类

package com;

public class User {
    
    
    private String id;
    private String name;
    private Integer age;

    public User(){
    
    

    }

    public User(String id, String name, Integer age) {
    
    
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public String getId() {
    
    
        return id;
    }

    public void setId(String id) {
    
    
        this.id = id;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public Integer getAge() {
    
    
        return age;
    }

    public void setAge(Integer age) {
    
    
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

方法一

package com;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class StreamTest {
    
    
    public static void main(String[] args) {
    
    
        List<User> userList = new ArrayList<>();
        userList.add(new User("1","aaa",10));
        userList.add(new User("2","bbb",20));
        userList.add(new User("3","ccc",30));

        Map<String,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
        System.out.println(userMap);
    }
}

在这里插入图片描述

方法二

package com;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class StreamTest {
    
    
    public static void main(String[] args) {
    
    
        List<User> userList = new ArrayList<>();
        userList.add(new User("1","aaa",10));
        userList.add(new User("2","bbb",20));
        userList.add(new User("3","ccc",30));

        Map<String,User> userMap = userList.stream().collect(Collectors.toMap(User::getId, user->user));
        System.out.println(userMap);
    }
}

Map里的坑

package com;
import java.util.HashMap;
import java.util.Map;

public class MapTest {
    
    
    public static void main(String[] args) {
    
    
        Map<String,String> map = new HashMap<>();
        map.put("1","aaa");
        map.put("1","bbb");
        System.out.println(map.get(1));
    }
}

在这里插入图片描述
在这里插入图片描述
他是鸡肋,可以存放所有类型,一定要小心

猜你喜欢

转载自blog.csdn.net/xiaowanzi_zj/article/details/121219510