jdk8 Collectors.toMap中的value为null时报NullPointerException

    技术2022-07-11  117

    一、问题说明

    如果Map中有个键值对的value为null,在调用Collectors.toMap时会报NullPointerException

    代码如下:

    public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("aaa", "111"); map.put("bbb", "222"); map.put("ccc", null); Map<String, String> resultMap; resultMap = map.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue())); System.out.println(resultMap); }

     

    二、问题解决

    源码中可以看到,明确要求value不能为null

    解决思路:当value为null时,更换成""就行了

    将上面的代码修改成:

    public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("aaa", "111"); map.put("bbb", "222"); map.put("ccc", null); Map<String, String> resultMap; resultMap = map.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey(), entry -> Optional.ofNullable(entry.getValue()).orElse(""))); System.out.println(resultMap); }

     

    参考链接:

    https://blog.csdn.net/wysnxzm/article/details/81260073

    https://blog.csdn.net/qq_40223688/article/details/104264461

    Processed: 0.014, SQL: 9