java - 使用 Hashmap 创建多个 Array 列表

标签 java arraylist

我有一个名为 Student 的类,它有 String 属性 date。我有我所有学生的列表,现在我想创建多个 ArrayLists,它们按他们的 date 分组。

我想使用 HashMap :

ArrayList students = getStudents();

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

for (Student i: students) {
 // There must be something
}

我如何创建多个学生数组列表,这些数组列表按其属性的字符串值分组?

最佳答案

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

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

getDateStudent 类的方法,您希望通过它对 Student 进行分组。

要完成 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);
}

关于java - 使用 Hashmap 创建多个 Array 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29715645/

相关文章:

java - 声明数组不工作java

java - 使用迭代器和 ArrayList 的具有 10 个记录的多个 ArrayList

java - 修剪这组数据的简单方法是什么? ( java )

java - sublist(from,to).clear() 是否允许对 ArrayList 的清除部分进行垃圾回收?

java - 如何从项目的 Maven 依赖树中删除旧的易受攻击的 Apache 公共(public)集合版本依赖项?

java - 在java中使用PID杀死ubuntu进程

java - Android布局按布局

java - 在Java中为列表列表的成员赋值

java - 运行 Storm 拓扑时为 "java.lang.OutOfMemoryError: unable to create new native thread"

java - Java 中是否存在未处理的异常处理程序?