Java でリストをマップに変換する方法: 最適なアプローチ
Java でリストをマップに変換するのは一般的なタスクです。さまざまな方法で達成できます。 1 つのアプローチは、リストを反復処理してマップを手動で設定することです。ただし、組み込み Java 機能を使用してこの変換を実行する、より効率的な方法があります。
ストリームベースのアプローチ (Java 8 以降)
Java 8 では、 Stream API は、リストをマップに変換するための簡潔でパフォーマンスの高い方法を提供します。このアプローチでは、Collectors.toMap() メソッドを利用します。
Map<Integer, String> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));
ここで、Item::getKey ラムダ関数はリスト内の各要素のキーを取得します。一方、項目 -> item lambda は値を取得します。
ループを使用した手動アプローチ
Java 8 より前のバージョンの場合、またはストリーミングが適切でない場合は、手動アプローチを使用できます。
List<Object[]> results; Map<Integer, String> resultsMap = new HashMap<>(); for (Object[] o : results) { resultsMap.put((Integer) o[0], (String) o[1]); }
このアプローチには、リストを反復処理し、キーと値のペアを手動で抽出することが含まれますが、これは、ストリームベースのアプローチ。
非全単射関数に二項演算子を使用する
マッピング関数が全単射でない場合 (つまり、複数の値が同じキーにマッピングできる) )、二項演算子を使用して重複したキー値をマージできます。たとえば、各一意のキーの値の合計を見つけたい場合:
Map<String, Integer> map = intList.stream().collect(toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
ここで、二項演算子 Integer::sum は、重複するキー値をマージするためのロジックを提供します。
結論
リストをマップに変換するための最適なアプローチは特定の要件によって異なりますが、効率性と簡潔性を考慮して、Collectors.toMap() を使用した Stream API をお勧めします。手動によるアプローチは、古いバージョンの Java またはストリーミングが適用できない場合に使用できます。
以上がJava リストをマップに効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。