这篇文章主要介绍了JAVA8流收集GROUPBY分组实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
实体类人,有个返回列表的buildPeopleList方法,方便测试。
进口lombok.AllArgsConstructor; 进口lombok.Builder; 进口lombok.Data; 进口lombok.NoArgsConstructor; 进口java.util.ArrayList; 进口java.util.Arrays; 进口并不知道;/* * * @author:押韵 * @date: 2019-09-26 17:31 * @topic:“主题” * @description:“描述” */@ data @NoArgsConstructor @AllArgsConstructor @Builder 公共类人{ 私人字符串名称; 私人字符串字符; 私人字符串性; 私人int年龄; 公共静态人buildDefault () { 返回People.builder () . name (LuoTianyan) .character .sex(“乐观”)(“女性”).age (24) .build (); } 公共静态ListbuildPeopleList () { 人p1=People.builder () . name (LuoTianyan) .character .sex(“乐观”)(“女性”).age (24) .build (); 人p2=People.builder () . name(张).character .sex(“乐观”)(“女性”).age (23) .build (); 人p3=People.builder () . name(胡).character .sex(“害羞”)(“女性”).age (25) .build (); 人p4=People.builder () . name (Y) .character .sex(“义人”)(“男性”).age (24) .build (); 返回新ArrayList<祝辞(数组。asList (p1, p2, p3, p4)); } }
测试类GroupByTest,分别根据性别分组,统计各个性别人数,以及各个性别映射姓名。
进口org.junit.After; 进口org.junit.Before; 进口org.junit.Test; 进口org.springframework.util.CollectionUtils; 进口并不知道; 进口java.util.Map; 进口java.util.function.BiConsumer; 进口java.util.stream.Collectors;/* * * @author:押韵 * @date: 2019-10-14 15:59 * @topic:“主题” * @description:“描述” */公开课GroupByTest { 私人List人; 私人BiConsumer soutKV; 私人地图结果; @Before 公共空间init () { 人=People.buildPeopleList (); soutKV=(k、v)→system . out。println (k +“:”+ v); } @After 公共空间soutResult () { 如果(! CollectionUtils.isEmpty(结果)){ result.forEach (soutKV); } }/* * *根据性别分组 */@Test 公共空间groupBySex () { 结果=people.stream () .collect ( Collectors.groupingBy (:: getSex) ); }/* * *分别统计不同性别各自的人数 */@Test 公共空间groupBySexCount () { 结果=people.stream () .collect ( 收藏家。groupingBy(人::getSex Collectors.counting () )); }/* * *分别统计不同性别各自的名字列表 */@Test 公共空间groupBySexName () { 结果=people.stream () .collect ( Collectors.groupingBy ( 人::getSex, 收藏家。映射(人::getName Collectors.toSet ()) )); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。