使用Hashmap创建多个Array列表

zxc*_*980 3 java arraylist

我有类命名Student,它有String属性date.我有我所有学生的名单,现在我想创建多个ArrayLists按他们分组的dates.

我想使用hashmap:

ArrayList students = getStudents();

Map map<String, ArrayList<Student>> = new HashMap<String, ArrayList<Student>);

for (Student i: students) {
 // There must be something
}
Run Code Online (Sandbox Code Playgroud)

如何创建多个学生的ArrayLists,按其属性的String值分组?

Era*_*ran 5

使用Java 8 Streams的最简单方法:

Map<String, List<Student>> map =
    students.stream()
            .collect(Collectors.groupingBy(Student::getDate));
Run Code Online (Sandbox Code Playgroud)

您想要对哪个类进行分组的getDate方法在哪里?StudentStudent

要完成Java 8之前的代码的答案:

Map<String, List<Student>> map = new HashMap<>();
for (Student s : students) {
    List<Student> list = map.get(s.getDate());
    if (list == null) {
        list = new ArrayList<Student>();
        map.put (s.getDate(), list);
    }
    list.add (s);
}
Run Code Online (Sandbox Code Playgroud)