How to iterate Map in Java

10 Sept 2024 | 4 分钟阅读

在 Java 中,迭代 Map 有多种方式。请记住,我们不能直接使用迭代器来迭代 Map,因为 Map 接口不是 Collection 的一部分。Java 中的所有 Map 都实现了 Map 接口。Java 中有以下类型的 Map:

  • HashMap
  • TreeMap
  • LinkedHashMap

Map 并非 Collection,但仍被归类为 Collections Framework 的一部分。因此,Map 是一个接口,它不继承 Collections 接口。

Iterator

Iterator 是一个用于迭代 Collection 的接口。它在 Java Collections Framework 中取代了 Enumeration。Iterator 和 Enumeration 之间的区别是:

  • Iterator 可以遍历旧式和新式元素,而 Enumeration 只能遍历旧式元素。
  • Iterator 是快速失败(fail-fast)的,而 Enumeration 则不是。

Collection 视图

Collection 视图方法允许将 Map 以以下方式视为 Collection:

  • keySet:这是 Map 中包含的键的集合。
  • values:这是 Map 中包含的值的集合。
  • entrySet:这是 Map 中键值对的集合。

Map 接口还有一个名为 Map.entry 的小嵌套接口。Collection 视图是迭代 Map 的唯一方式。

使用 Iterator 接口

迭代 HashMap 的示例

输出

Roll no.: 130     name: Davesh
Roll no.: 150     name: Pawan
Roll no.: 120     name: Prateek
Roll no.: 140     name: Kamal
Roll no.: 110     name: Ravi

使用 keyset() 和 value() 方法

keyset():HashMap 类的 keySet() 方法用于迭代 Map 中包含的键。它返回键的 Set 视图。

语法

values():HashMap 类的 values() 方法用于迭代 Map 中包含的值。它返回值的 Collection 视图。

语法

示例

输出

State: Gujarat
State: Sikkim
State: Uttar Pradesh
Capital: Gandhi Nagar
Capital: Ganagtok
Capital: Lucknow

使用 Map.entry<K,V> 方法

Map.Entry<K,V> 是一个接口。它返回 Map 的 Collection 视图,其元素是此类的实例。

map.entrySet() 方法返回 Map 中包含的映射的 Set 视图。对 Map 的更改会反映在 Set 中,反之亦然。它还支持元素移除,这将从 Map 中移除相应的映射。

语法

示例

输出

Item: Oats, Price: 220.0
Item: Dry Fruits, Price: 434.23
Item: Cookies, Price: 90.87
Item: Chocolate, Price: 70.89

迭代键并获取值

示例

在下面的示例中,我们首先迭代键,然后获取值。

输出

Key: Rahul, Value: Tiwari
Key: Devesh, Value: Mishra
Key: Sumit, Value: Singh

使用 forEach() 方法

ArrayList 的 forEach() 方法用于对 Iterable 的每个元素执行一个操作,直到所有元素都被处理完毕。

语法

该方法以 action(要对每个元素执行的操作)作为参数。它不返回任何内容。如果指定的 action 为 null,它将抛出 NullPointerException

示例

在下面的示例中,我们在 forEach() 方法中使用 lambda 表达式来打印 Map 的每个元素。

输出

Company: Wipro, Net worth: $21.5 billion
Company: TCS, Net worth: $100 billion

下一个主题Java 教程