如何在 Java 中迭代 LinkedHashMap?

javaobject oriented programmingprogramming

LinkedHashMap 是一个与 HashMap 相同的类,但它还提供了跟踪元素插入顺序的功能。使用 HashMap 不会保留元素添加的顺序,尽管它允许快速插入、搜索和删除元素。

通过保留映射中每个条目的链接列表,LinkedHashMap 解决了这个问题。借助此链接列表,元素按引入的顺序保存。因此,在迭代 LinkedHashMap 时,将根据元素的添加方式返回元素。

使用的方法

要在 Java 中迭代 LinkedHashMap,您可以使用两种主要方法:

  • 使用方法 keySet() 和 get()

  • 使用 entrySet() 和 Iterator

方法 1:使用方法 keySet() 和 get()

keySet() 方法返回映射内所有键的集合。get() 函数返回与给定键相关的值。借助迭代 keySet() 并为每个键调用 get(),我们可以打印映射内的所有键值对。

语法


linked_hash_map.keySet()

LinkedHashMap 类的 keySet() 函数不需要任何参数。它通过返回一个包含 LinkedHashMap 中找到的每个键的集合来响应。

可以使用 get() 方法迭代此键集合以获取与映射中的键相关的值。

要一次又一次地迭代映射的键,请使用 for 循环。for 循环将重复执行 keySet() 方法返回的集合。对于循环的每次迭代,在使用 get() 方法获取映射的链接值之前,将检索集合的当前键。

keySet()

此代码使用 keySet() 方法从 LinkedHashMap 中检索一组键,然后使用 for-every 循环遍历每个键。在循环内部,它使用 get() 检索每个键的相应值并打印键值对。

算法

  • 步骤 1 - 首先创建一个对象。这里我们采用了 LinkedHashMap。

  • 步骤 2 - 在地图上创建几个键值对。

  • 步骤 3 - 使用 keySet() 函数从地图中获取键集。

  • 步骤 4 - 借助 for 循环遍历键。

  • 步骤 5 - 对于每个键,使用 get() 方法检索与该键关联的值。

  • 步骤 6 - 打印键及其对应的值。

示例


// 借助 keySet() 和 get() 方法遍历 LinkedHashMap

import java.util.LinkedHashMap;
import java.util.Set;

public class Tutorialspoint {

   public static void main(String a[]){

        // 创建 LinkedHashMap 的对象
        LinkedHashMap<String, String> linkedHashMap
        = new LinkedHashMap<String, String>();
        
        // 在 linkedHashMap 中添加元素
        linkedHashMap.put("P", "Python");
        linkedHashMap.put("J", "Java");
        linkedHashMap.put("R", "Ruby");
        
        Set<String> keys = linkedHashMap.keySet();
        
        // 打印 LinkedHashMap 的元素
        for (String key : keys) {
        System.out.println(key + " -- " + linkedHashMap.get(key));
        }
   }
}

输出

P -- Python
J -- Java
R -- Ruby

方法 2:使用 entrySet() 和 Iterator

使用 entrySet() 方法和 Iterator 迭代 LinkedHashMap 允许您按选定顺序遍历映射的元素,同时保持插入顺序。

语法


Linkedhash_map.entrySet()

参数 - 该方法不接受任何输入参数。

返回值:该方法返回一个包含与 LinkedHashMap 相同元素的集合。

换句话说,该方法可以在用户不提供任何数据的情况下使用。它仅返回一个包含 LinkedHashMap 内容副本的集合。

entrySet()

代码示例解释了如何迭代 LinkedHashMap。它打印其条目。它利用 entrySet() 函数检索一组键值对。然后创建一个迭代器来遍历条目并分别打印每个条目。输出向我们展示了 LinkedHashMap 的条目及其键和对应的值。

算法

  • 步骤 1 - 创建一个名为"linkedHashMap"的 LinkedHashMap 对象。

  • 步骤 2 - 使用 put() 方法将元素添加到 linkedHashMap。

  • 步骤 3 - 使用 entrySet() 方法从 linkedHashMap 获取条目集并将其存储在"entrySet"变量中。

  • 步骤 4 - 使用 entrySet 上的 iterator() 方法创建一个迭代器。

  • 步骤 5 - 使用 while 循环遍历 LinkedHashMap 条目。

  • 步骤6 − 在循环中,使用 hasNext() 方法检查迭代器。

  • 步骤 7 − 如果有更多条目,则使用 next() 方法检索下一个条目。

  • 步骤 8 − 打印输出。

示例


// 使用 entrySet() 和迭代器对 linkedHashMap 进行迭代

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;

public class TLP {

   public static void main(String[] args){

        // 创建一个 LinkedHashMap 并向其中添加元素
        LinkedHashMap<String, String> linkedHashMap
        = new LinkedHashMap<String, String>();
        
        // 将元素合并到 linkedHashMap
        linkedHashMap.put("Java", "是第一个元素");
        linkedHashMap.put("Python", "是第二个元素");
        linkedHashMap.put("Ruby", "是第三个元素");
        
        Set entrySet = linkedHashMap.entrySet();
        
        // 获取条目集的迭代器
        Iterator it = entrySet.iterator();
        
        // 遍历 LinkedHashMap 条目
        System.out.println("LinkedHashMap entities -> ");
        
        while (it.hasNext())
        // 使用 it.next() 遍历每个元素
        System.out.println(it.next());
   }
}

输出

LinkedHashMap entries -> 
Java=is the first elemenent
Python=is the second element
Ruby=is the third element

结论

在 Java 中对 LinkedHashMap 进行迭代可以使用两种基本技术完成 -

通过使用 keySet() 方法和 get() 方法,您可以从映射中检索一组键并对其进行迭代以访问相应的值。

通过使用 entrySet() 方法和 Iterator,它允许您按插入顺序遍历映射的元素。


相关文章