Reason HashMap没有实现Iterable接口?

Ama*_*mar 24 java collections

任何人都可以告诉我为什么HashMap不实现Iterable 接口

das*_*ght 27

坦率地说,Map一般(HashMap特别是)没有实现,Iterator因为它不清楚它应该迭代什么.有三种选择:

  • 按键

上述三种选择中没有一种看起来完全不合理:可以支持这些方法中的每一种.最后,图书馆设计师决定不为你做出这个选择,让程序员选择明确迭代的内容.


Man*_*noj 11

Map没有实现它,但您可以使用keySet()或者values()或者entrySet()所有实现迭代器,因为它们是集合.请在此处查看地图javadoc

  • 这个答案没有提到为什么它没有实现它. (4认同)
  • 这是真的,但它确实说明了如何解决它,这很有用。 (2认同)

use*_*339 3

哈希映射包含两种数据结构:键和值,每个数据结构都有一个迭代器。HashMap 作为一个整体并不是一个应该迭代的数据结构。