我遇到了以下代码:
for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet()) {
// ...
}
Map.Entry<K,V>
是什么意思?什么是entry
对象?
我读到方法entrySet
返回地图的设定视图。但我不理解for-each
循环中的初始化。
答案 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)
条目是键/值对。在这种情况下,它是Integers
到VmAllocation
个对象的映射。
正如javadoc所说
地图条目(键值对)。 Map.entrySet方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是来自此collection-view的迭代器。这些Map.Entry对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是未定义的,除非通过映射条目上的setValue操作。
答案 3 :(得分:1)
您可以了解Map.Entry Docs
地图条目(键值对)。 Map.entrySet方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是来自此collection-view的迭代器。这些Map.Entry对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是未定义的,除非通过映射条目上的setValue操作。
for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet())
entry
是Map.Entry
类型的变量,每次迭代都会在Entry
中使用allMap
类型数据进行实例化。