在 Java 中迭代映射

原文:https://www.studytonight.com/java-examples/iterate-a-map-in-java

映射是 Java 中的一个接口,用于存储键值对。我们不能使用迭代器直接迭代映射,因为它不是一个真正的集合。然而,还有其他遍历映射的方法。我们将使用映射。入口界面。它用于存储单个键值映射。我们可以应用以下技术来迭代任何映射(HashMap、LinkedHashMap 或 TreeMap)。

使用 EntrySet 和 For 循环

Map.entrySet() 方法返回我们映射的集合视图(集合),返回集合的每个元素都是 Map.Entry 类型,所以我们基本上得到一个集合<映射。词条< K,V > > 。我们可以遍历这个集合,并使用 getKey()getValue() 方法从每个 Map.Entry 中获取键和值。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();

        for(Map.Entry<Integer, String> e : entrySet)
            System.out.println(e.getKey() + "--->" + e.getValue());
    }
}

【T11】>【Justin】 【102】>【Jessica】 【103】>【Simon】 【104】>哈利

使用迭代器和 EntrySet

在上面的代码中,我们使用了 for 循环。我们还可以使用迭代器遍历 Map.entrySet()返回的集合。我们将首先使用条目集上的迭代器()方法获得一个迭代器实例。然后,我们可以使用 hasNext()next() 方法循环遍历每个元素并获取它。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
        Iterator<Entry<Integer, String>> entrySetIterator = entrySet.iterator();

        while(entrySetIterator.hasNext())
        {
            Map.Entry<Integer, String> e = entrySetIterator.next();
            Integer key = e.getKey();
            String value = e.getValue();
            System.out.println(key + "--->" + value);
        }
    }
}

【T11】>【Justin】 【102】>【Jessica】 【103】>【Simon】 【104】>哈利

使用映射的键集()方法

顾名思义, Map.keySet() 方法返回一个包含映射实例所有键的集合。我们可以使用 get() 方法迭代每个键并检索相应的值。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        Set<Integer> keySet = map.keySet();

        for(Integer key : keySet)
            System.out.println(key + "--->" + map.get(key));
    }
}

【T11】>【Justin】 【102】>【Jessica】 【103】>【Simon】 【104】>哈利

使用 forEach()和 Lambda 表达式(Java 8)

这可能是最简单的方法,我们可以用它在一行代码中迭代一个 Map。下面的代码演示了这种技术。

import java.util.HashMap;
import java.util.Map;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        map.forEach((key, value) -> System.out.println(key + "-->" + value));
    }
}

【T11】>【Justin】 【102】>【Jessica】 【103】>【Simon】 【104】>哈利

使用流(Java 8)

我们可以使用流 API 在映射中循环。我们将再次使用 entrySet()方法,然后从这个集合创建一个流。接下来,我们将在每个映射上使用 forEach()方法。条目并获取其键和值。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();

        entrySet.stream()
                   .forEach(e -> System.out.println(e.getKey() + "-->" + e.getValue()));
    }
}

【T11】>【Justin】 【102】>【Jessica】 【103】>【Simon】 【104】>哈利

分别迭代键和值

在上面所有的部分中,我们并行遍历键和值。但是,我们可以分别遍历键和值。我们可以通过使用 Map.keySet()方法得到一个包含所有键的集合。然后,我们可以简单地使用 for 循环遍历集合。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        Set<Integer> keySet = map.keySet();

        for(Integer key : keySet)
            System.out.println(key);
    }
}

101 102 103 104

同样,我们可以使用值()方法获取包含映射所有值的集合。

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class Demo
{
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<>();
        map.put(101, "Justin");
        map.put(102, "Jessica");
        map.put(103, "Simon");
        map.put(104, "Harry");

        Collection<String> valueSet = map.values();

        for(String value : valueSet)
            System.out.println(value);
    }
}

贾斯汀杰西卡 T2 西蒙哈利

摘要

在本教程中,我们学习了如何在 Java 中迭代映射。大多数方法都使用了 Map.entrySet()。此方法返回包含映射条目的集合。然后,我们可以使用 for 循环或迭代器遍历这些条目。我们还可以使用 keySet()方法从映射中获取密钥。将 values()方法与 for 循环一起使用,以迭代映射值。我们也可以使用带有 lambda 表达式或流的 forEach()方法来迭代一个映射,但是它们只在 Java 8 和更高版本中可用。