在构造函数中使用Map参数

ojo*_*ifu 3 java

我有一个类,Student有这个构造函数.

 public Student(String name, int age, Map<String, Integer> grades) {
    this.setName(name);
    this.setAge(age);
    this.setGrades(grades);
 }
Run Code Online (Sandbox Code Playgroud)

在创建Student对象时,如何在构造函数中传递Map参数?

我们正在寻找的是类似的东西:

List<Student> roster = new ArrayList<>();
roster.add(new Student("Ann Droid", 145, Arrays.asList(96, 78)));
Run Code Online (Sandbox Code Playgroud)

如果我有这个构造函数:

public Student(String name, int age, List<Integer> grades) {
    this.setName(name);
    this.setAge(age);
    this.setGrades(grades);
 }
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

香草味的普通Java没有任何地图的地图Arrays.asList().所以你必须初始化Map几行代码,如下所示:

Map<String, Integer> grades = new HashMap<String, Integer>();
grades.put("English", 90);
roster.add(new Student("Ann Droid", 145, grades);
Run Code Online (Sandbox Code Playgroud)

但是,使用Google的Guava,你可以这样做:

Map<String, Integer> grades = ImmutableMap.of("English", 90);
Run Code Online (Sandbox Code Playgroud)