美文网首页
Map类的KeySet返回值只是一个引用

Map类的KeySet返回值只是一个引用

作者: 噜智深 | 来源:发表于2019-03-24 17:12 被阅读0次

    Map类对象的keySet()返回是一个Set对象引用,而不是一份拷贝,如果对返回值进行操作,会影响Map对象,这个坑容易被忽略。

    Map<Object, Object> map = HashMap<Object, Object>();
    map.put("1","aaa");
    map.put("2","bbb");
    map.put("3","ccc");
    Set<Object> set = map.keySet();
    set.remove("1");
    map.get("1") //返回null
    

    所以,如果要得到一个独立的键集合的话,使用new HashSet<>(map.keySet())深拷贝即可。
    以此类推,其他JDK里面的集合类也会存在类似的机制,以后使用的时候要多加小心!

    相关文章

      网友评论

          本文标题:Map类的KeySet返回值只是一个引用

          本文链接:https://www.haomeiwen.com/subject/laiuvqtx.html