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只使用了一次具体类 ( )。在以后可以更改实现的地方使用接口很重要。

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

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

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

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

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

listOfMapOfList.add(mapOfList);

但:

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

让我们给你的班级打电话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>();

如果将来您想将您的学生放入 key 为 的地图中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);

如果您的列表必须是 type List<HashMap<String, ArrayList<String>>>,则将您的map变量声明为 aHashMap而不是 a Map

于 2013-05-13T07:00:07.283 回答
2

首先,您需要定义Listas :

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

要添加Map,请List使用add(E e)方法:

list.add(map);
于 2013-05-13T07:00:34.540 回答
0
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];
}
于 2017-06-14T08:42:33.233 回答