zoukankan      html  css  js  c++  java
  • jdk8 map.getOrDefault需要注意一点

    jdk8 对map新增了一个方法map.getOrDefault(key, defaultValue),相比如map.get,前者在有值的时候返回值,无值的时候(null和空串)返回指定的defaultValue

    今天发现getOrDefault方法特定情况下结果与预期不符,研究了一下,是这样的:

    但是进行map.put后,如果key的value为null,对应key的getOrDefault方法失效

    如下:

        Map<String, Object> map=new HashMap<String,Object>();
        System.out.println(map.get("yanan"));//打印null
        System.out.println(map.getOrDefault("yanan", 1));//打印1
        
        map.put("yanan", null);
        System.out.println(map.get("yanan"));//打印null
        System.out.println(map.getOrDefault("yanan", 1));//打印null

    如果不为null,为空或其他字符,仍旧生效

        Map<String, Object> map=new HashMap<String,Object>();
        System.out.println(map.get("yanan"));//打印null
        System.out.println(map.getOrDefault("yanan", 1));//打印1
        
        map.put("yanan", "");
        System.out.println(map.get("yanan"));//打印空串
        System.out.println(map.getOrDefault("yanan", 1));//打印空串
        Map<String, Object> map=new HashMap<String,Object>();
        System.out.println(map.get("yanan"));//打印null
        System.out.println(map.getOrDefault("yanan", 1));//打印1
    
        map.put("yanan", 2);
        System.out.println(map.get("yanan"));//打印2
        System.out.println(map.getOrDefault("yanan", 1));//打印2
  • 相关阅读:
    atcoder #082 E 暴力 计算几何
    LightOJ 1364 树形DP
    gym100712 ACM Amman Collegiate Programming Contest
    CF757 C hash
    CF844 C 置换 水
    CF544 C 背包 DP
    CF540 D 概率 DP
    CF540 C BFS 水
    CF540 B 贪心
    CF745 C 并查集
  • 原文地址:https://www.cnblogs.com/yanan7890/p/12922103.html
Copyright © 2011-2022 走看看