我的hashmap将字符串存储为键,并将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>();
任何人都可以帮助我在列表中使用哪种方法以及如何将地图存储到其中?
答案 0 :(得分:31)
始终尝试在集合中使用界面参考,这增加了更多的灵活性
以下代码有什么问题?
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.
您可以像上面那样轻松完成。
答案 1 :(得分:15)
首先,让我解释一下你的声明:
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);
<强> BUT:强>
立即停止创建复杂的集合!想想未来:您可能必须将内部地图更改为其他内容或列表设置等。这可能会导致您重写代码的重要部分。而是定义包含数据的类,然后将其添加到一维集合中:
让我们打电话给你的班级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>();
答案 2 :(得分:3)
尝试以下方法:
List<Map<String, ArrayList<String>>> mapList =
new ArrayList<Map<String, ArrayList<String>>>();
mapList.add(map);
如果您的列表必须是List<HashMap<String, ArrayList<String>>>
类型,请将您的map
变量声明为HashMap
,而不是Map
。
答案 3 :(得分:2)
首先,您需要将List
定义为:
List<Map<String, ArrayList<String>>> list = new ArrayList<>();
要将Map
添加到List
,请使用add(E e)方法:
list.add(map);
答案 4 :(得分: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];
}