[Java]Map(マップ)をループするには?

Java

どうも、ちょげ(@chogetarou)です。

Map(マップ)をループする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Map(マップ)をループするには、for文もしくはforEach()を使います。

forループ

Map(マップ)をforループする方法は、3つあります。

キーと値のペアをループ

1つ目は、キーと値のペアをforループする方法です。

まず、for (Map.Entry<TKey, TValue> entry: map.entrySet()){}のように、forループの対象にMapから呼び出したentrySet()の戻り値を指定します。

そして、{}内にループ処理を指定します。

ループ処理では、ループ変数のgetKey()でキー、getValue()で値を取得できます。

//TKey=キーの型、TValue=値の型
for (Map.Entry<TKey, TValue> entry: map.entrySet()) {
    //ループ処理
    //変数「entry」のgetKey()でキー、getValue()で値を取得
}

上記のforループは、entrySet()を呼び出したMap(マップ)をEntryでforループします。

使用例

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Map<String, Integer> numbers = new HashMap<String, Integer>();
        numbers.put("one", 1);
        numbers.put("two", 2);
        numbers.put("three", 3);
        numbers.put("four", 4);
        numbers.put("five", 5);
        
        for (Map.Entry<String, Integer> entry: numbers.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}
出力:
four:4
one:1
two:2
three:3
five:5

キーのみをループ

2つ目は、キーのみをループする方法です。

まず、for (T key: map.keySet()){}のように、forループの対象にMapから呼び出したkeySet()の戻り値を指定します。

そして、{}内にループ処理を指定します。

ループ処理では、ループ変数でMapのキーを取得できます。

for (T key: map.keySet()) {
    //ループ処理
    //変数「key」でキーを取得
}

上記のforループは、keySet()を呼び出したMap(マップ)のキーをforループします。

使用例

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Map<String, Integer> numbers = new HashMap<String, Integer>();
        numbers.put("one", 1);
        numbers.put("two", 2);
        numbers.put("three", 3);
        numbers.put("four", 4);
        numbers.put("five", 5);
        
        for (String key: numbers.keySet()) {
            System.out.println(key);
        }
    }
}
出力:
four
one
two
three
five

値のみをループ

3つ目は、値のみをループする方法です。

まず、for (T value: map.values()){}のように、forループの対象にMapから呼び出したvalues()の戻り値を指定します。

そして、{}内にループ処理を指定します。

ループ処理では、ループ変数でMapの値を取得できます。

for (T value: map.values()) {
    //ループ処理
    //変数「value」で値を取得
}

上記のforループは、values()を呼び出したMap(マップ)の値をforループします。

使用例

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Map<String, Integer> numbers = new HashMap<String, Integer>();
        numbers.put("one", 1);
        numbers.put("two", 2);
        numbers.put("three", 3);
        numbers.put("four", 4);
        numbers.put("five", 5);
        
        for (int value: numbers.values()) {
            System.out.println(value);
        }
    }
}
出力:
4
1
2
3
5

forEach()

Map(マップ)をforEach()でループする方法は、3つあります。

キーと値をループ

1つ目は、キーと値をループする方法です。

まず、MapからforEach()を呼び出します。

foEach()の引数に、2つの引数を持つラムダ式を指定します。

そして、ラムダ式の{}内に、ループ処理を指定します。

ループ処理では、ラムダ式の第1引数でキー、第2引数で値を取得できます。

map.forEach((key,value) -> { 
    //ループ処理
    //第1引数「key」でキー、第2引数「value」で値を取得
});

上記のforEach()は、呼び出したMap(マップ)をループします。

使用例

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Map<String, Integer> numbers = new HashMap<String, Integer>();
        numbers.put("one", 1);
        numbers.put("two", 2);
        numbers.put("three", 3);
        numbers.put("four", 4);
        numbers.put("five", 5);
        
        numbers.forEach((key,value) -> { 
            System.out.println(key + ":" + value);
        });
    }
}
出力:
four:4
one:1
two:2
three:3
five:5

キーのみをループ

2つ目は、キーのみをループする方法です。

まず、MapからkeySet()を呼び出します。

keySet()からforEach()を呼び出します。

forEach()の引数に、引数を1つ持つラムダ式を指定します。

そして、ラムダ式の{}内にループ処理を指定します。

ループ処理では、引数でキーを取得できます。

map.keySet().forEach((key) -> { 
    //ループ処理
    //引数「key」でキーを取得
});

上記のforEach()は、keySet()を呼び出したMap(マップ)のキーをループします。

使用例

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Map<String, Integer> numbers = new HashMap<String, Integer>();
        numbers.put("one", 1);
        numbers.put("two", 2);
        numbers.put("three", 3);
        numbers.put("four", 4);
        numbers.put("five", 5);
        
        numbers.keySet().forEach((key) -> { 
            System.out.println(key);
        });
    }
}
出力:
four
one
two
three
five

値のみをループ

3つ目は、値のみをループする方法です。

まず、Mapからvalues()を呼び出します。

valeus()からforEach()を呼び出します。

forEach()の引数に、引数を1つ持つラムダ式を指定します。

そして、ラムダ式の{}内にループ処理を指定します。

ループ処理では、引数で値を取得できます。

map.values().forEach((value) -> { 
    //ループ処理
    //引数「value」で値を取得
});

上記のforEach()は、values()を呼び出したMap(マップ)の値をループします。

使用例

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception {
        Map<String, Integer> numbers = new HashMap<String, Integer>();
        numbers.put("one", 1);
        numbers.put("two", 2);
        numbers.put("three", 3);
        numbers.put("four", 4);
        numbers.put("five", 5);
        
        numbers.values().forEach((value) -> { 
            System.out.println(value);
        });
    }
}
出力:
4
1
2
3
5

まとめ

Mapをループするには、forループもしくはforEach()を使います。

Map(マップ)をforループする方法は、次の3つです。

  • キーと値のペアをループする方法
    for (Map.Entry<TKey, TValue> entry: map.entrySet()) { /*ループ処理*/ }
  • キーのみをループする方法
    for (T key: map.keySet()) { /*ループ処理*/ }
  • 値のみをループする方法
    for (T value: map.values()) { /*ループ処理*/ }

Map(マップ)をforEach()でループする方法は、次の3つです。

  • キーと値をループする方法
    map.forEach((key,value) -> { /*ループ処理*/ });
  • キーのみをループする方法
    map.keySet().forEach((key) -> { /*ループ処理*/ });
  • 値のみをループする方法
    map.values().forEach((value) -> { /*ループ処理*/ });

コメント

タイトルとURLをコピーしました