在将 ArrayList 设置和重置为 HashMap 中的值时找不到方向
Having trouble finding direction in setting and resetting an ArrayList as a value in a HashMap
我目前正在开发一个将学生和测验分数添加到 HashMap 的简单程序。我可以添加一个学生和 his/her 相应的测验分数,但是在添加分数时,它们都是一样的,因为我正在读取每个键值作为相同的 ArrayList。我希望能够为每个学生添加 3 个分数,而不是每个学生都有相同的分数递增列表。只是在寻找与此有关的一些方向,因为我在 Hashmap 中找不到有关 ArrayList 的大量信息。可能是我看错地方了。
UserIO inputReader = new UserIO();
HashMap<String, ArrayList> students = new HashMap<>();
ArrayList<Integer> quizScores = new ArrayList<>();
UserIO class 只是一个简单的 input/output class。
这是我添加学生的代码。
//add a student
String name = inputReader.readString("Please enter student name:");
quizScores.add(inputReader.readInt("Enter score for quiz 1: ", 0, 100));
quizScores.add(inputReader.readInt("Enter score for quiz 2: ", 0, 100));
quizScores.add(inputReader.readInt("Enter score for quiz 3: ", 0, 100));
students.put(name, quizScores);
break;
我需要为每个学生实例化一个新的 ArrayList 吗?如果是这样的话,围绕我的添加代码循环会有帮助吗?
这是作业提示的一部分:
The program must store student quiz data in a HashMap that has the student name as the key and an ArrayList of integers as the values. (Will this affect how you calculate average scores?)
编辑:我试图阻止发生的事情的一个例子,在添加一名学生后我得到:
迈克
[45, 67, 78]
和两个学生:
迈克
[45, 67, 78, 45, 87, 68]
吉姆
[45, 67, 78, 45, 87, 68]
你已经完成了一半。您只需要正确添加学生成绩即可。
HashMap<String, List<>> students = new HashMap<>();
// Add quiz score addScore(studentId, score)
List<Integer> quizScores = students.get(studentId);
if (quizScores == null) {
quizScores = new ArrayList<>();
}
quizScores.add(score);
// if data is not added by reference then set it back like below
students.put(studentId, quizScores);
我目前正在开发一个将学生和测验分数添加到 HashMap 的简单程序。我可以添加一个学生和 his/her 相应的测验分数,但是在添加分数时,它们都是一样的,因为我正在读取每个键值作为相同的 ArrayList。我希望能够为每个学生添加 3 个分数,而不是每个学生都有相同的分数递增列表。只是在寻找与此有关的一些方向,因为我在 Hashmap 中找不到有关 ArrayList 的大量信息。可能是我看错地方了。
UserIO inputReader = new UserIO();
HashMap<String, ArrayList> students = new HashMap<>();
ArrayList<Integer> quizScores = new ArrayList<>();
UserIO class 只是一个简单的 input/output class。 这是我添加学生的代码。
//add a student
String name = inputReader.readString("Please enter student name:");
quizScores.add(inputReader.readInt("Enter score for quiz 1: ", 0, 100));
quizScores.add(inputReader.readInt("Enter score for quiz 2: ", 0, 100));
quizScores.add(inputReader.readInt("Enter score for quiz 3: ", 0, 100));
students.put(name, quizScores);
break;
我需要为每个学生实例化一个新的 ArrayList 吗?如果是这样的话,围绕我的添加代码循环会有帮助吗?
这是作业提示的一部分:
The program must store student quiz data in a HashMap that has the student name as the key and an ArrayList of integers as the values. (Will this affect how you calculate average scores?)
编辑:我试图阻止发生的事情的一个例子,在添加一名学生后我得到:
迈克 [45, 67, 78]
和两个学生:
迈克 [45, 67, 78, 45, 87, 68] 吉姆 [45, 67, 78, 45, 87, 68]
你已经完成了一半。您只需要正确添加学生成绩即可。
HashMap<String, List<>> students = new HashMap<>();
// Add quiz score addScore(studentId, score)
List<Integer> quizScores = students.get(studentId);
if (quizScores == null) {
quizScores = new ArrayList<>();
}
quizScores.add(score);
// if data is not added by reference then set it back like below
students.put(studentId, quizScores);