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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM