web-dev-qa-db-ja.com

HashMap <String、ArrayList <String >>をリスト内に保存するにはどうすればよいですか?

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

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>();

リストにどの方法とどのように使用してマップを保存するのを助けることができますか?

22
user2376600

コレクションで常にインターフェイス参照を使用しようとする、これにより柔軟性が増します。
以下のコードの問題は何ですか?

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.

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

31
Shreyos Adikari

最初に、宣言を少し修正しましょう。

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"));

これで、マップをリストに追加する準備ができました。

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>();
15
AlexR

以下を試してください:

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

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

3
Duncan Jones

まず、Listを次のように定義する必要があります。

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

MapListに追加するには、 add(E e) methodを使用します。

list.add(map);
2
NINCOMPOOP
class Student{
    //instance variable or data members.

    Map<Integer, List<Object>> mapp = new HashMap<Integer, List<Object>>();
    Scanner s1 = new Scanner(System.in);
    String name = s1.nextLine();
    int regno ;
    int mark1;
    int mark2;
    int total;
    List<Object> list = new ArrayList<Object>();
    mapp.put(regno,list); //what wrong in this part?
    list.add(mark1);
    list.add(mark2);**
    //String mark2=mapp.get(regno)[2];
}
0
James