在python中,我们可以构建一个像students = {name1:[marks1,marks2], name2:[marks1,marks2]}
填写我们可以做的标记
students[name1][0]=50, students[name1][1]=100
获取students={name1:[50,100]}
我怎样才能在Java中做同样的事情?我是java的新手
答案 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);
//...