在Java中访问Dictionary的元素,其中值是列表

时间:2014-05-25 07:05:16

标签: java list dictionary

在python中,我们可以构建一个像students = {name1:[marks1,marks2], name2:[marks1,marks2]}

这样的字典

填写我们可以做的标记

students[name1][0]=50, students[name1][1]=100获取students={name1:[50,100]}

我怎样才能在Java中做同样的事情?我是java的新手

2 个答案:

答案 0 :(得分:2)

您可以使用Map之类的方式实现这一目标。

 Map<String, List<Integer>> students=...

此处,String用于学生姓名,List<Integer>用于标记。现在,将值应用于逻辑

 List<Integer> marks= students.get(name1);
 if(marks==null){
   marks = new ArrayList<>();
 }
 students.put(name1, marks.add(mark));

答案 1 :(得分:1)

您可以使用Guava中的Multimap来实现此目的:

Multimap <String, Integer> students = ArrayListMultimap<String, Integer>.create();
students.put(name1, mark1);
students.put(name1, mark2);
students.put(name2, mark3);
students.put(name2, mark4);
Collection <Integer> marks1 = students.get (name1);
Collection <Integer> marks2 = students.get (name2);

您可以使用此Collection执行任何操作,例如:

double avg = 0;
for (Integer mark : marks1)
    avg += mark;
avg /= marks1.size();

如果您对使用Collection做某事不合适,可以使用不太通用的代码来获取List<Integer>

ListMultimap <String, Integer> students = ArrayListMultimap<String, Integer>.create();
//...
List <Integer> marks1 = students.get(name1);
//...