我遇到了以下代码:
for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet()) {
// ...
}
是什么Map.Entry<K,V>
意思?对象是什么entry
?
我读到该方法entrySet
返回地图的集合视图。但我不明白这个for-each
循环初始化。
Map.Entry
是构成 a 的一个元素的键/值对Map
。有关更多详细信息,请参阅文档。
您通常会将其用于:
Map<A, B> map = . . .;
for (Map.Entry<A, B> entry : map.entrySet()) {
A key = entry.getKey();
B value = entry.getValue();
}
如果您需要处理每个键/值对,这比遍历键集并调用get(key)
以获取每个值更有效。
转到文档: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());
}
条目是键/值对。在这种情况下,它是Integers
到VmAllocation
对象的映射。
正如javadoc所说
映射条目(键值对)。Map.entrySet 方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是从此集合视图的迭代器。这些 Map.Entry 对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是未定义的,除非通过对映射条目的 setValue 操作。
您可以了解Map.Entry Docs
映射条目(键值对)。Map.entrySet 方法返回地图的集合视图,其元素属于此类。获取对映射条目的引用的唯一方法是从此集合视图的迭代器。这些 Map.Entry 对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了支持映射,则映射条目的行为是未定义的,除非通过对映射条目的 setValue 操作。
检查每个循环文档
for(Map.Entry<Integer,VmAllocation> entry : allMap.entrySet())
entry
是一个类型变量,每次迭代都会用类型数据Map.Entry
实例化。Entry
allMap