📜  如何在Java中迭代 LinkedHashMap?(1)

📅  最后修改于: 2023-12-03 15:08:55.497000             🧑  作者: Mango

如何在Java中迭代 LinkedHashMap?

在Java中,LinkedHashMap是一种有序的散列表,它在内部用链表维护元素的顺序。如果您希望按顺序迭代LinkedHashMap中的元素,则可以使用以下方法。

使用迭代器迭代LinkedHashMap

LinkedHashMap的迭代器继承自HashMap的迭代器,并添加了用于访问上一个和下一个元素的方法。因此,您可以使用它来按顺序迭代LinkedHashMap中的键值对。

LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
// 添加键值对
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

// 迭代键值对
Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
  Map.Entry<String, Integer> entry = it.next();
  System.out.println(entry.getKey() + " = " + entry.getValue());
}

输出:

A = 1
B = 2
C = 3
使用for-each循环迭代LinkedHashMap

对于Java 5及更高版本,您可以使用for-each循环来迭代LinkedHashMap中的元素。因为LinkedHashMap的entrySet()方法返回一个Set对象,该对象是按顺序包含键值对的,所以可以轻松地使用for-each循环来按顺序迭代它们。

LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
// 添加键值对
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

// 迭代键值对
for (Map.Entry<String, Integer> entry : map.entrySet()) {
  System.out.println(entry.getKey() + " = " + entry.getValue());
}

输出:

A = 1
B = 2
C = 3
使用Lambda表达式迭代LinkedHashMap

对于Java 8及更高版本,您可以使用Lambda表达式和流API来迭代LinkedHashMap中的元素,并对它们进行过滤、映射、排序等操作。

LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
// 添加键值对
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);

// 过滤出值大于1的键值对,并按键升序排序
map.entrySet().stream()
  .filter(entry -> entry.getValue() > 1)
  .sorted(Map.Entry.comparingByKey())
  .forEach(entry -> System.out.println(entry.getKey() + " = " + entry.getValue()));

输出:

B = 2
C = 3

以上是在Java中迭代LinkedHashMap的三种方法。无论您是使用迭代器、for-each循环还是Lambda表达式,都可以很容易地按顺序迭代LinkedHashMap中的元素。