什么是Map.Entry <k,v> interface?</k,v>

时间:2013-09-18 04:34:00

标签: java map

我遇到了以下代码:

for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet()) {
       // ...
}

Map.Entry<K,V>是什么意思?什么是entry对象?

我读到方法entrySet返回地图的设定视图。但我不理解for-each循环中的初始化。

4 个答案:

答案 0 :(得分:10)

Map.Entry是一个键/值对,它构成Map的一个元素。有关详细信息,请参阅the docs

您通常会将其用于:

Map<A, B> map = . . .;
for (Map.Entry<A, B> entry : map.entrySet()) {
    A key = entry.getKey();
    B value = entry.getValue();
}

如果您需要处理每个键/值对,这比迭代键集并调用get(key)以获取每个值更有效。

答案 1 :(得分:4)

转到文档:Map.Entry

Map.Entry是一个表示地图中一个条目的对象。 (标准映射每1个键有1个值。)因此,此代码将对所有键值对进行迭代。

你可以打印出来:

for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet()) {
       System.out.print("Key: " + entry.getKey());
       System.out.println(" / Value: " + entry.getValue());
}

答案 2 :(得分:3)

条目是键/值对。在这种情况下,它是IntegersVmAllocation个对象的映射。

正如javadoc所说

  

地图条目(键值对)。 Map.entrySet方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是来自此collection-view的迭代器。这些Map.Entry对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是未定义的,除非通过映射条目上的setValue操作。

答案 3 :(得分:1)

您可以了解Map.Entry Docs

  

地图条目(键值对)。 Map.entrySet方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是来自此collection-view的迭代器。这些Map.Entry对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是未定义的,除非通过映射条目上的setValue操作。

检查For Each Loop Docs

for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet()) 

entryMap.Entry类型的变量,每次迭代都会在Entry中使用allMap类型数据进行实例化。