Java中list分组

java里把一个list按某个属性分组成map,并且排除该属性为空的条目,应该怎么写啊

jdk1.8可以使用Stream分组,大致这样

  Map<String, List<test>> testMap = testList.stream()
                .filter(p -> p.getname() != null)
                .collect(Collectors.groupingBy(test::getname));

java8 可以 Collectors.toMap(x->x.get某个属性())


List<Student> students = new ArrayList<>();
Map<String, List<Student>> groupedStudents = students.stream()
    .collect(Collectors.groupingBy(Student::getGrade));
  • 这篇文章:java list分页 也许有你想要的答案,你可以看看
  • 除此之外, 这篇博客: Java list集合 分组并排序中的 三、list分组收集成map,按照某个字段进行。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Map<Long, List<Object>> map =list().stream().collect(Collectors.groupingBy(DTO::getId));