23

私のハッシュマップは、文字列をキーとして、配列リストを値として保存します。ここで、これをリストに埋め込む必要があります。つまり、次の形式になります。

List<HashMap<String, ArrayList<String>>>

これらは私が使用した宣言です:

Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
ArrayList<String> arraylist = new ArrayList<String>();
map.put(key,arraylist);
List<String> list = new ArrayList<String>();

マップをリストに保存するために、リストでどの方法とどのように使用するかを誰かが助けてくれますか?

4

5 に答える 5

34

常に Collectionでインターフェイス参照を使用するようにしてください。これにより、柔軟性が向上します。
以下のコードの問題は何ですか?

List<Map<String,List<String>>> list = new ArrayList<Map<String,List<String>>>();//This is the final list you need
Map<String, List<String>> map1 = new HashMap<String, List<String>>();//This is one instance of the  map you want to store in the above list.
List<String> arraylist1 = new ArrayList<String>();
arraylist1.add("Text1");//And so on..
map1.put("key1",arraylist1);
//And so on...
list.add(map1);//In this way you can add.

上記のように簡単にできます。

于 2013-05-13T07:17:22.740 に答える
16

まず、宣言を少し修正させてください。

List<Map<String, List<String>>> listOfMapOfList = 
    new HashList<Map<String, List<String>>>();

HashMap具象クラス ( ) を 1 回だけ使用したことに注意してください。後で実装を変更できるインターフェイスを使用することが重要です。

今度は要素をリストに追加したいと思いませんか? ただし、要素はマップであるため、作成する必要があります。

Map<String, List<String>> mapOfList = new HashMap<String, List<String>>();

次に、マップにデータを入力します。幸いなことに、リストを作成するユーティリティを使用できます。それ以外の場合は、リストを個別に作成する必要があります。

mapOfList.put("mykey", Arrays.asList("one", "two", "three"));

OK、これでマップをリストに追加する準備が整いました:

listOfMapOfList.add(mapOfList);

しかし:

複雑なコレクションの作成は今すぐやめてください。将来について考えてみてください。おそらく、内部マップを別のものに変更したり、リストを設定したりする必要があります。これにより、おそらくコードの重要な部分を書き直す必要があります。代わりに、データを含むクラスを定義してから、それを 1 次元コレクションに追加します。

クラスを呼び出しましょうStudent(例として):

public Student {
    private String firstName;
    private String lastName;
    private int studentId;

    private Colectiuon<String> courseworks = Collections.emtpyList();

    //constructors, getters, setters etc
}

これで、単純なコレクションを定義できます:

Collection<Student> students = new ArrayList<Student>();

将来、キーが であるマップに生徒を配置したい場合は、次のstudentIdようにします。

Map<Integer, Student> students = new HashMap<Integer, Student>();
于 2013-05-13T07:04:55.823 に答える
3

次のことを試してください。

List<Map<String, ArrayList<String>>> mapList = 
    new ArrayList<Map<String, ArrayList<String>>>();
mapList.add(map);

リストのタイプが でなければならない場合は、変数を ではなくとしてList<HashMap<String, ArrayList<String>>>宣言します。mapHashMapMap

于 2013-05-13T07:00:07.283 に答える
2

最初に as を定義する必要がありますList:

List<Map<String, ArrayList<String>>> list = new ArrayList<>();

に を追加するMapにはListadd(E e)メソッドを使用します。

list.add(map);
于 2013-05-13T07:00:34.540 に答える