如何在列表中存储HashMap <String,ArrayList <String >>?

use*_*600 22 java list append hashmap

我的hashmap将字符串存储为键,并将arraylist存储为值.现在,我需要将其嵌入到列表中.也就是说,它将具有以下形式:

List<HashMap<String, ArrayList<String>>>
Run Code Online (Sandbox Code Playgroud)

这些是我用过的声明:

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>();
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我在列表中使用哪种方法以及如何将地图存储到其中?

Shr*_*ari 31

总是尝试在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.
Run Code Online (Sandbox Code Playgroud)

您可以像上面那样轻松完成.


Ale*_*exR 15

首先,让我解释一下你的声明:

List<Map<String, List<String>>> listOfMapOfList = 
    new HashList<Map<String, List<String>>>();
Run Code Online (Sandbox Code Playgroud)

请注意我HashMap只使用了一次具体的class().使用接口非常重要,您可以在以后更改实现.

现在你要将元素添加到列表中,不是吗?但元素是一个地图,所以你必须创建它:

Map<String, List<String>> mapOfList = new HashMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)

现在您想要填充地图.幸运的是,您可以使用为您创建列表的实用程序,否则您必须单独创建列表:

mapOfList.put("mykey", Arrays.asList("one", "two", "three"));
Run Code Online (Sandbox Code Playgroud)

好了,现在我们准备将地图添加到列表中:

listOfMapOfList.add(mapOfList);
Run Code Online (Sandbox Code Playgroud)

但:

立即停止创建复杂的集合!想想未来:您可能必须将内部地图更改为其他内容或列表设置等.这可能会导致您重写代码的重要部分.而是定义包含数据的类,然后将其添加到一维集合中:

我们打电话给你的班级Student(就像例子一样):

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

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

    //constructors, getters, setters etc
}
Run Code Online (Sandbox Code Playgroud)

现在您可以定义简单集合:

Collection<Student> students = new ArrayList<Student>();
Run Code Online (Sandbox Code Playgroud)

如果您将来想要将学生放入关键所在的地图studentId,请执行以下操作:

Map<Integer, Student> students = new HashMap<Integer, Student>();
Run Code Online (Sandbox Code Playgroud)