帮忙举个例子:
Map<Integer, String> map = new HashMap<>();
map.put(1, "Vasilisa");
map.put(2, "Marina");
map.put(3, "Kate");
for (Map.Entry<Integer, String> entry: map.entrySet()){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
来自 Java 文档,不是很专业的英语,所以我使用了翻译器。
Map.entrySet 方法返回其元素属于此类的地图的集合视图。获取对映射条目的引用的唯一方法是从该视图集合的迭代器。这些 Map.Entry 对象仅在迭代期间有效;更正式地说,如果在迭代器返回条目后修改了基本映射,则映射条目的行为是未定义的,除了对映射条目的 setValue 操作。
我真的不明白我们为什么要这样做:
Map.Entry <Integer, String> entry: map.entrySet()
首先是Type,然后是Variable,然后是Collection / Array,但我真的不明白为什么要写Map.Entry + 然后不只是map,而是map.entrySet()。
帮助我用清晰简单的语言理解,提前谢谢!
要使用for-each循环迭代的元素必须实现Iterable接口。
由于
Map它没有实现Iterable,因此您需要将其转换为其他形式Iterable。实际上,这就是该方法所做的entrySet,返回Set键值对(即Set<Map.Entry>),并且Set是Iterable.Map.Entry只是一个接口Entry,也就是一个键值对,我们写Map.Entry,因为Entry是类中定义的一个接口Map,所谓的Nested-интерфейс.