質問: 初投稿失礼します。 現在Eclipseでjavaを書いているのですが、Mapについて質問があります。 " List A " と " List> B " を用いて " Map> C "を作成したいと考えています。 また、それぞれのAとBは先頭から順番に一対一の関係(Aの一つ目の要素はBの一つ目のリスト要素,Aの二つ目の要素はBの二つ目のリスト要素...)としたいです。 何卒、宜しくお願い致します。 ///******************追加************************/// 上記の内容に関して、keyとvalueを逆にしたMap, Integer>を作成したいと考えております。 具体的には、各Listの文字列集合のリストに対し、int型の重みをつけたいと考えています。
回答: AとBの要素数が違っていた場合にどうするのか未定ですが。 ``` Map> C = new HashMap<>(); for (int i = 0; i < A.size(); i++) { C.put(A.get(i), B.get(i)); } ``` こんな感じではいかがでしょうか? 「Aが1の時は、Bのこの値」といった条件があるならば、put前にAの値を取り出して、Bの値を検索すれば良いと思います。 追加質問ですが、AとBの要素の順序が、そのまま対応付いているならば、下記の様にしてはいかがでしょうか。 ``` Map,Integer> C = new LinkedHashMap<>(); for (int i = 0; i < A.size(); i++) { C.put(B.get(i), A.get(i)); } ``` LinkedHashMapを使うのは、後から利用するときに、キーがListだと検索しづらいから、要素番号を保たせています。