У вас есть один экземпляр карты:
Map<String , String> studentRecord = new HashMap();
, который вы добавляете в список дважды.
Когда вы звоните studentRecord.put
для второго студента, вы вызываете это на единственном экземпляре карты , переопределяя таким образом ключи от первого студента.
Лучшее решение: не использовать карту для представления объекта данных . Используйте класс. Это то, для чего они были созданы.
enum Sex
{
MALE, FEMALE
}
class Student
{
private final String name;
private final int age;
private final Sex sex;
Student(String name, int age, Sex sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
// getters...
}
List<Student> students = new ArrayList<>();
students.add(new Student("aaa", 222, Sex.MALE));
students.add(new Student("bbb", 44, Sex.FEMALE));
Если вы просто хотите быстрое и грязное решение, вы можете использовать это:
//Record for second Student
studentRecord = new HashMap<>(); // I added this line
studentRecord.put("Name","bbb");
studentRecord.put("Age","44");
studentRecord.put("Sex","f");
studentList.add(studentRecord);
, который создает второе HashMap
для второго студента, таким образом гарантируя, что ключи от первой карты не будут переопределены.