美文网首页
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返回值只是一个引用

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

  • Map类中实现迭代的方法keyset,entryset

    Keyset: 由于Map类中没有isterator方法所以无法直接对Map类中的数据进行迭代。但是Map类中有k...

  • Map对象中的keyset()、entryset()和Map.E

    一 Map对象中的keySet()和entrySet() 1. keySet() keySet()返回的是map对...

  • Map

    1、Map(映射):Map的keySet()方法返回key的集合,因为Map的key是不能重复的,所以keySet...

  • Java-API-集合框架(六)-Map

    概述 Map Map集合特点 Map常见功能 Map基本使用 keySet()、entrySet()、values...

  • 深入了解Map集合

    注意事项: 使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历。 说明:key...

  • HashMap

    获取Key值 map.keySet() 获取values值 map.values

  • map

    map,取key用map.keySet().取value用map.get(key).

  • Map和Map.entry

    Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()...

  • Java集合操作

    List转为Map List转为Set retainAll 保留公共的元素 map.keySet() guava ...

网友评论

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

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