HOWTO · Java

Java でのマップフィルタリング

Java でマップから値をフィルタリングする方法。

このページの内容

Java プログラミング言語でマップ値をフィルタリングする方法を学習します。このタスクを実行する方法は 2つあります。それらを見てみましょう。

Java でのマップフィルタリング

マップのフィルタリングに使用できる 2つのメソッドは、entrySet()getKey() です。最初のメソッド entrySet() では、値を使用してマップをフィルタリングします。

2 番目のメソッド getKey() では、完全なキーと値のペアを使用します。メソッドはやや複雑で、複数の変換が含まれます。

entrySet()

entryset() メソッドは値を返します。値を挿入して、その値がマップに存在するかどうかを確認できます。次のコードを見てください。

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
  public static void main(String[] args) {
    String result = "";
    Map<Integer, String> Country = new HashMap<>();
    Country.put(1, "Canada"); // Inserting Value
    Country.put(2, "UnitedStates"); // Inserting Value
    Country.put(3, "UnitedKingdom"); // Inserting Value
    Country.put(4, "Argentina"); // Inserting Value

    // Map -> Stream -> Filter -> String   //Filter Using Map Value
    result = Country.entrySet()
                 .stream()
                 .filter(map -> "Argentina".equals(map.getValue()))
                 .map(map -> map.getValue())
                 .collect(Collectors.joining());
    System.out.println("Filtered Value Is ::" + result);
  }
}

出力:

Filtered Value Is ::Argentina

値をフィルタリングするコード行はかなり長いです。上記のように、値を Map から Stream に変換します。次に、そのストリームをフィルタリングし、フィルタリングされた値を文字列内に格納します。stream メソッドは、セットをストリームに変換します。filter メソッドは、マップから値をフィルタリングします。

getKey()

getKey() メソッドは、完全なキーと値のペアを返します。値を一致させる代わりに、そのキーを使用して値を取り出します。完全にフィルタリングされたキーと値のペアは、別のマップ内に保存され、後で出力されます。次のコードを見てください。

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
  public static void main(String[] args) {
    String result = "";
    Map<Integer, String> Country = new HashMap<>();
    Country.put(1, "Canada"); // Inseting Value
    Country.put(2, "UnitedStates"); // Inserting Value
    Country.put(3, "UnitedKingdom"); // Inserting Value
    Country.put(4, "Argentina"); // Inserting Value

    // Filter Using Map Value
    Map<Integer, String> pair =
        Country.entrySet()
            .stream()
            .filter(map -> map.getKey().intValue() == 1)
            .collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));
    System.out.println("Pair Is : " + pair);
  }
}

出力:

Pair Is : {1=Canada}

概念を具体的に理解するには、次のリンクにアクセスする必要があります。

ストリームについてはこちらを、マップについてはこちらをご覧ください。