1概要

このクイック記事では、JavaのMapのエントリを反復処理するさまざまな方法について説明します。

簡単に言うと、

keySet()、valueSet()

、または

entrySet()

を使用してMapの内容を抽出できます。これらはすべて集合なので、同様の反復原則がそれらすべてに適用されます。


entry.getKey()

はキーを返し、

entry.getValue()

は対応する値を返します。

これらのいくつかを見てみましょう。

===

2

EntrySet



For Loop

まず、

Entry





_

Set

を使用して

Map

を反復処理する方法を見てみましょう:

_

public void iterateUsingEntrySet(Map<String, Integer> map) {
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}

ここでは、マップを一連のエントリに変換してから、従来のfor-eachアプローチを使用してそれらを繰り返します。


getKey()

を呼び出すことで各エントリのキーにアクセスでき、__getValue()を呼び出すことで各エントリの値にアクセスできます。

===

3

Iterator



EntrySet

もう1つの方法は、一連のエントリを取得し、__Iteratorを使用して反復を実行することです。

public void iterateUsingIteratorAndEntry(Map<String, Integer> map) {
    Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, Integer> entry = iterator.next();
        System.out.println(entry.getKey() + ":" + entry.getValue());
    }
}


entrySet()の

iterator()

APIを使用して

Iterator

インスタンスを取得する方法に注意してください。次に、通常どおり

iterator.next().__を使用して反復子をループ処理します。

===

4ラムダ付き

それでは、

λ式を使用して

Map__を反復する方法を見てみましょう。

Java 8の他のほとんどのものと同様に、これは他のものよりもずっと単純であることがわかります。

forEach()

メソッドを使用します。

public void iterateUsingLambda(Map<String, Integer> map) {
    map.forEach((k, v) -> System.out.println((k + ":" + v)));
}

この場合、マップを一連のエントリに変換する必要はありません。ラムダ式の詳細については、リンクすることができます:/java-8-lambda-expressions-tips[ここから始めてください]。

===

5

Stream

API


Stream

APIは、

Java 8

の主な機能の1つです。この機能を使用して

Map

をループ処理することもできますが、前の例と同様に、最初に一連のエントリを取得する必要があります。

public void iterateUsingStreamAPI(Map<String, Integer> map) {
    map.entrySet().stream()
     //...
      .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue()));
}

  • これは追加の

    Stream

    処理をすることを計画しているときに使われるべきです。それ以外の場合は、前述のように単なる

    forEach()

    です。


Stream

APIの詳細については、リンク:/java-8-streamsを参照してください。

===

6. 結論

このチュートリアルでは、単純だが重要な操作、つまりマップのエントリを繰り返す操作に焦点を当てました。

Java 8でのみ使用できる2つのメソッド、つまりLambda式と

Stream

APIを見ました。

いつものように、この記事のコード例はhttps://github.com/eugenp/tutorials/tree/master/java-collections-maps[GitHubについて]で見つけることができます。