首页 > 其他分享 >集合通过Collectors.toMap转map的注意事项

集合通过Collectors.toMap转map的注意事项

时间:2024-08-08 09:27:57浏览次数:13  
标签:map toMap Collectors userList User new null

注意事项

Collectors.toMap
key:不能有两个相同的key,可以为null(多个值对应一个key)
value:可以有相同的value,但value不能为null

import org.junit.jupiter.api.Test;

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

/**
 * Collectors.toMap
 * key:不能有两个相同的key,可以为null(多个值对应一个key)
 * value:可以有相同的value,但value不能为null
 */
public class MyTest {

    @Test
    void test0() {
        List<User> userList = new ArrayList<>();
        // 不能有两个相同的key
        userList.add(new User("张三", "18"));
        userList.add(new User("张三", "19"));
        userList.stream().collect(Collectors.toMap(User::getName, User::getAge));
    }

    @Test
    void test1() {
        List<User> userList = new ArrayList<>();
        // value 不能为null
        userList.add(new User("王五", null));
        userList.stream().collect(Collectors.toMap(User::getName, User::getAge));
    }

    @Test
    void test2() {
        List<User> userList = new ArrayList<>();
        // key可以为null,value可以重复
        userList.add(new User(null, "18"));
        userList.add(new User("李四", "null"));
        userList.add(new User("王五", "null"));
        Map<String, String> nameAgeMap = userList.stream().collect(Collectors.toMap(User::getName, User::getAge));
        System.out.println(nameAgeMap.get(null));
    }

    @Test
    void test3() {
        List<User> userList = new ArrayList<>();
        // 对象不能为null
        userList.add(null);
        Map<String, String> nameAgeMap = userList.stream().collect(Collectors.toMap(User::getName, User::getAge));
        System.out.println(nameAgeMap.get(null));
    }
    

    class User {

        private String name;

        private String age;

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

        public String getName() {
            return name;
        }

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

        public String getAge() {
            return age;
        }

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

    }

}

标签:map,toMap,Collectors,userList,User,new,null
From: https://www.cnblogs.com/miefind/p/18348304

相关文章

  • `EnumSet` 和 `EnumMap` 枚举类
    EnumSet和EnumMap枚举类目录EnumSet和EnumMap枚举类EnumSet创建EnumSetEnumSet操作EnumMap创建EnumMapEnumMap操作EnumSetEnumSet是基于位向量(bitvector)的集合实现,专为枚举类型设计,提供了非常高效的内存和性能表现。EnumSet不允许包含null元素,并且所有元素都必......
  • 【ES6】使用Set和Map进行全组合判断
    判断数据集是否为全组合关系例如下列表格,字段1包含(甲、乙)值,字段2包含(a、b)值,字段3包含(1、2、3)值,每种组合情况都可以在数据集的行记录中找到有且仅有的一条。字段1字段2字段3甲a1甲a2甲a3甲b1甲b2甲b3乙a1乙a2乙a3乙b1乙b2乙b3要求函数输入以下格式数据,输出布尔值。const......
  • mapboxgl 加载瓦片网格
    importmapboxglfrom"mapbox-gl";exportdefaultclassGridLayer{constructor(map){this.map=map;this.gridSourceId="grid-source";this.gridLayerId="grid-layer";this.labelSourceId="label-sour......
  • 神经网络中的评价指标:混淆矩阵、Acc, Precision, Recall, F1分数、[email protected][email protected]:0
    混淆矩阵(ConfusionMatrix)是一个常用的分类模型性能评价工具,用于可视化分类算法的性能表现。混淆矩阵以矩阵的形式展示了分类模型的预测结果与真实结果之间的各种组合情况。混淆矩阵通常是一个2x2的矩阵,如果是二分类问题的话。矩阵的行代表真实的类别,列代表预测的类别。矩......
  • 如何解决hashmap不按序问题
    HashMap 在Java中本质上是不保证任何顺序的,特别是它不保证元素会按照插入的顺序进行存储或遍历。如果需要维护元素的插入顺序,可以使用 LinkedHashMap,它在内部通过维护一个双向链表来保持插入顺序。如果想要按照键的自然顺序或者自定义的比较器顺序来存储和遍历键值对,可以使......
  • @MapperScan的作用,以及与@Mapper的区别
    @MapperScan的作用@MapperScan的作用:这个注解告诉MyBatis-Spring-Boot-Starter自动扫描指定包(及其子包)下的所有接口。对于扫描到的每个接口,MyBatis会自动创建一个MapperFactoryBean。这个MapperFactoryBean会被注册到Spring容器中。自动IoC管理:通过上述过......
  • Hadoop3.4.0跑wordcount程序报错:org.apache.hadoop.mapreduce.v2.app.MRAppMaster
    部署完Hadoop3.4.0HA后跑wordcount程序报错,在日志文件里 http://rsnode:8042/logs/userlogs 里看到报错日志说不能加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster网上给的办法大多都是让执行hadoopclasspath然后把那一长串配置到 mapred-site.xml。如图 ......
  • lambda 中 map 和 flatMap 的区别
    lambda中map和flatMap的区别 https://blog.csdn.net/weixin_52772307/article/details/128944511 总结:当我们需要将具有层级结构的数据展平时,也就是将多层数据转换为单层数据操作时,我们可以使用flatMap方法。如果我们只是简单的对流中的数据计算或者转换时,可以使用......
  • yolov5 mAP计算代码分析
    前言模型训练过程中每一轮都会计算P,R,mAP,[email protected]等数值,本篇分析这些数值的计算过程,分析最核心部分。我的感受是计算的过程比想象的复杂。主要的流程在yolov5/val.py文件的process_batch处理函数中。ifnl:tbox=xywh2xyxy(labels[:,1:5])#targetboxesscale_bo......
  • 【C++/STL】map和set的封装(红黑树)
     ......