在Java 8中,我们可以使用stream.groupingBy方法对流中的元素进行分组操作。在groupingBy方法中,我们可以使用当前项作为分组的依据。
具体使用方法如下:
Stream<Person> personStream = Stream.of(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Alice", 35),
new Person("Bob", 40)
);
Map<String, List<Person>> groupedByPersonName = personStream
.collect(Collectors.groupingBy(Person::getName));
在上述代码中,我们使用Person::getName作为分组的依据,将流中的Person对象按照name属性进行分组。最终,我们将得到一个Map对象,其中键是name属性的值,值是对应分组的Person对象列表。
Map<String, Long> countByPersonName = personStream
.collect(Collectors.groupingBy(Person::getName, Collectors.counting()));
在上述代码中,我们使用Person::getName作为分组的依据,并使用Collectors.counting方法对每个分组中的元素进行计数。最终,我们将得到一个Map对象,其中键是name属性的值,值是对应分组中元素的数量。
总结: 在Java 8中,我们可以使用stream.groupingBy方法对流中的元素进行分组操作。在groupingBy方法中,我们可以使用当前项作为分组的依据。通过指定分组的依据,我们可以将流中的元素按照指定的属性进行分组,并进行其他操作,例如计数、求和等。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云