3

Java 8ストリームを使用して、 Java 8 List<V> から Map<K, V> へのソリューションで説明されているように、リストをマップに変換したいと考えています。ただし、値をキーに 2 回変換することなく、特定のキー (たとえば、キーが null の場合) を持つエントリを削除するようにフィルター処理したいと考えています。

たとえば、次のように収集する前にフィルタリングを行うことができます

Map<String, Choice> result =
    choices.stream().filter((choice) -> choice.getName() != null).collect(Collectors.toMap(Choice::getName,
                                 Function.<Choice>identity());

私の場合、キーを取得するためのロジックは、単純にフィールド プロパティを取得するよりも複雑です。最初にフィルターでロジックを実行し、次に Collectors.toMap の keyMapper 関数でロジックを実行することは避けたいと思います。

カスタム keyMapper 関数を使用してリストをマップに変換し、新しいキーに基づいて特定の値をフィルタリングするにはどうすればよいですか?

4

3 に答える 3