📜  使用Java中的迭代器遍历 LinkedHashMap(1)

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

使用Java中的迭代器遍历 LinkedHashMap

LinkedHashMap是Java中的一种特殊类,它是HashMap类的一种变体,也是一个以键值对的形式存储元素的集合。LinkedHashMap还有一个特殊的特性,就是它能够按照元素添加的顺序来维护元素的次序。迭代LinkedHashMap的元素可以使用迭代器(iterator)。

迭代器用法

在Java中,迭代器是一种设计模式,用于遍历集合类中封装在对象内部的元素。要使用迭代器,必须实现Iterator接口。Iterator接口中,有三个核心的方法:

  • hasNext()方法:如果迭代器有更多元素,则返回true。
  • next()方法:将迭代器的指针移动到下一个元素,并返回上一个元素。
  • remove()方法:从集合中删除上一个元素。
Iterator<String> it = hashMap.keySet().iterator();
while (it.hasNext()) {
    String key = it.next();
    String value = hashMap.get(key);
    System.out.println("Key: " + key + "  Value: " + value);
}

在上面的代码段中,我们创建了一个迭代器iterator,然后使用它遍历了LinkedHashMap中的每一个元素,并打印它们的键和值。在这里,我们使用了HashMap的keySet()方法获取key的集合,进而使用key的迭代器来遍历元素。

迭代LinkedHashMap

我们可以使用类似的方式来迭代LinkedHashMap。LinkedHashMap并不提供特定的迭代器,它使用与HashMap相同的迭代器。但是,由于LinkedHashMap按照元素添加的顺序维护元素的次序,因此,我们可以用它迭代元素来保证元素的一定顺序。

LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("cat", "Lucy");
linkedHashMap.put("dog", "Jack");
linkedHashMap.put("duck", "Lily");
Iterator<Map.Entry<String, String>> iterator = linkedHashMap.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, String> entry = iterator.next();
    System.out.print(entry.getKey() + ":" + entry.getValue() + " ");
}

在上面的代码中,我们首先创建了一个LinkedHashMap,并添加了三个元素(名为“cat”,“dog”和“duck”),并分别对应了“Lucy”,和“Jack”,和“Lily”。

接着,我们创建了一个迭代器iterator,并使用它来遍历linkedHashMap中的每一个元素,打印它们的键和值。在这里,我们使用LinkedHashMap的entrySet()方法获取所有的Entry对象集合,然后使用entry的迭代器来遍历元素。在迭代器返回每一个entry时,我们可以使用getKey()方法和getValue()方法来获取当前元素的键和值。

输出如下:

cat:Lucy dog:Jack duck:Lily  
总结

我们可以使用迭代器iterator来迭代LinkedHashMap中的每一个元素。这里需要注意的是,LinkedHashMap并不提供特定的迭代器,它使用与HashMap相同的迭代器。但是,由于LinkedHashMap按照元素添加的顺序维护元素的次序,因此,我们可以用它迭代元素来保证元素的一定顺序。