在java中调用HashMap的keySet()方法时返回什么类型的对象?

时间:2016-09-09 05:12:35

标签: java hashmap iterator

从文档中,它返回$wnDropdown这是一个接口。假设我写了这个,

Set<E>

我不明白这个Set<E> keys = myHashMap.keySet(); 究竟返回了什么,或者什么是变量键。

另外,为什么我能够这样做

keySet()

因为接口没有实现任何方法。

3 个答案:

答案 0 :(得分:2)

根据java doc,

  

Map.keyset()返回此映射中包含的键的set视图。该   set由地图支持,因此对地图的更改将反映在地图中   设置,反之亦然。如果迭代结束时修改了地图   该集正在进行中(除非通过迭代器自己的删除   操作),迭代的结果是未定义的。

所以基本上它是一个实现Set Interface的类的对象,这就是我们能够在该对象上调用iterator()的原因。

答案 1 :(得分:0)

HashMap.keySet()返回哈希映射中的键集。

HashMap<Integer, String> myHashMap = new HashMap<>();
myHashMap.put(1, "one");
myHashMap.put(2, "two");
myHashMap.put(3, "three");

Set<Integer> keys = myHashMap.keySet();
System.out.println("keys of the map are: "+keys); // prints [1, 2, 3]

此外,Set<E>扩展了Collection<E>Iterable<E>也扩展了Iterable<E>。这意味着Set<E>iterator()的超级接口,这就是为什么您可以Set<E>

进行<T>的原因

答案 2 :(得分:0)

myHashMap.keySet()返回此地图myHashMap中包含的键的Set视图。

请注意MapSet不同,以便:

  1. Mapkeyvalue对组成。 Key正在映射到特定的value
  2. Set仅适用于任何类型的单个对象。它们不是成对存储的。
  3. 请参阅documentation

    什么是迭代器?

    如果您想循环浏览集合中的元素,例如,您可能希望显示每个元素。在我们的示例中,如果要显示返回的集合中的每个键,那么我们将使用iterator

      

    Iterator使您可以遍历集合,获取或删除元素。