JAVA8 STREAM COLLECT GROUPBY分组实例解析
文件大小: 36k
源码售价: 69 个金币 积分规则     积分充值
资源说明:"JAVA8 STREAM COLLECT GROUPBY分组实例解析" JAVA8 中的Stream API提供了Collectors.groupBy()方法来实现分组操作,分组后的结果是一个Map对象,其中key是分组的条件,value是分组后的列表。下面通过示例代码介绍了JAVA8 STREAM COLLECT GROUPBY分组实例解析。 定义一个实体类People,用于测试,包含四个属性:name、character、sex和age。通过建造者模式构建实体对象,并提供了一个静态方法buildPeopleList(),用于生成一组测试数据。 在测试类GroupByTest中,我们使用Stream API来实现分组操作。使用Collectors.groupBy()方法来将数据分组,根据sex属性进行分组。然后,使用Collectors.summingInt()方法来统计各个性别的人数。使用Collectors.mapping()方法来将各个性别映射到相应的姓名列表。 以下是详细的代码实现: ```java import org.junit.Test; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class GroupByTest { @Test public void testGroupBy() { List people = People.buildPeopleList(); Map countBySex = people.stream() .collect(Collectors.groupingBy(People::getSex, Collectors.counting())); Map> nameBySex = people.stream() .collect(Collectors.groupingBy(People::getSex, Collectors.mapping(People::getName, Collectors.toList()))); System.out.println("各个性别的人数:" + countBySex); System.out.println("各个性别的姓名列表:" + nameBySex); } } ``` 在上面的代码中,我们使用Stream API来实现分组操作。使用Collectors.groupBy()方法来将数据分组,根据sex属性进行分组。然后,使用Collectors.counting()方法来统计各个性别的人数。使用Collectors.mapping()方法来将各个性别映射到相应的姓名列表。 在输出结果中,我们可以看到各个性别的人数和各个性别的姓名列表。例如,输出结果可能是: ``` 各个性别的人数:{female=3, male=1} 各个性别的姓名列表:{female=[LuoTianyan, Zhang, Hu], male=[Y]} ``` 从输出结果中,我们可以看到,female性别有3人,male性别有1人,并且可以看到各个性别对应的姓名列表。 JAVA8 STREAM COLLECT GROUPBY分组实例解析提供了一个强大的工具来实现数据分组和统计,通过使用Collectors.groupBy()方法和Collectors.mapping()方法,我们可以轻松地实现数据分组和统计,并且输出结果也非常直观易懂。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。