1. ホーム
  2. java

[解決済み] 2つのリストをマップに結合する最良の方法は何ですか?(Java)

2023-07-04 22:12:03

質問

を使用するのは良いことでしょうか? for (String item: list) を使いたいところですが、これは一つのリストに対してのみ反復処理を行うので、もう一つのリストに対しては明示的なイテレータが必要になります。 あるいは、両方に対して明示的なイテレータを使用することもできます。

この問題の例と、インデックス付きの for ループを使用した解決策です。

import java.util.*;
public class ListsToMap {
  static public void main(String[] args) {
    List<String> names = Arrays.asList("apple,orange,pear".split(","));
    List<String> things = Arrays.asList("123,456,789".split(","));
    Map<String,String> map = new LinkedHashMap<String,String>();  // ordered

    for (int i=0; i<names.size(); i++) {
      map.put(names.get(i), things.get(i));    // is there a clearer way?
    }

    System.out.println(map);
  }
}

出力します。

{apple=123, orange=456, pear=789}

もっと明確な方法はないのでしょうか? コレクションAPIのどこかにあるのでは?

どのように解決するのですか?

キーと値の関係はリストインデックスによって暗黙の了解となっているので、リストインデックスを明示的に使用するfor-loopソリューションが、実は非常に明快で、しかも短いものだと思います。