JAVA8 STREAM COLLECT GROUPBY分組實(shí)例解析
這篇文章主要介紹了JAVA8 STREAM COLLECT GROUPBY分組實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
實(shí)體類(lèi)People,有個(gè)返回list的buildPeopleList方法,方便測(cè)試。
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author: rhyme
* @date: 2019-09-26 17:31
* @topic: "主題"
* @description: "描述"
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class People {
private String name;
private String character;
private String sex;
private int age;
public static People buildDefault() {
return People.builder().name("LuoTianyan").character("optimistic").sex("female").age(24).build();
}
public static List<People> buildPeopleList() {
People p1 = People.builder().name("LuoTianyan").character("optimistic").sex("female").age(24).build();
People p2 = People.builder().name("Zhang").character("optimistic").sex("female").age(23).build();
People p3 = People.builder().name("Hu").character("shy").sex("female").age(25).build();
People p4 = People.builder().name("Y").character("Righteous").sex("male").age(24).build();
return new ArrayList<>(Arrays.asList(p1, p2, p3, p4));
}
}
測(cè)試類(lèi)GroupByTest,分別根據(jù)性別分組,統(tǒng)計(jì)各個(gè)性別人數(shù),以及各個(gè)性別映射姓名。
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
/**
* @author: rhyme
* @date: 2019-10-14 15:59
* @topic: "主題"
* @description: "描述"
*/
public class GroupByTest {
private List<People> people;
private BiConsumer soutKV;
private Map result;
@Before
public void init() {
people = People.buildPeopleList();
soutKV = (k, v) -> System.out.println(k + ":" + v);
}
@After
public void soutResult() {
if (!CollectionUtils.isEmpty(result)) {
result.forEach(soutKV);
}
}
/**
* 根據(jù)性別分組
*/
@Test
public void groupBySex() {
result = people.stream().collect(
Collectors.groupingBy(People::getSex)
);
}
/**
* 分別統(tǒng)計(jì)不同性別各自的人數(shù)
*/
@Test
public void groupBySexCount() {
result = people.stream().collect(
Collectors.groupingBy(People::getSex, Collectors.counting()
));
}
/**
* 分別統(tǒng)計(jì)不同性別各自的name列表
*/
@Test
public void groupBySexName() {
result = people.stream().collect(
Collectors.groupingBy(
People::getSex,
Collectors.mapping(People::getName, Collectors.toSet())
));
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入Spring Boot實(shí)現(xiàn)對(duì)Fat Jar jsp的支持
這篇文章主要介紹了深入Spring Boot實(shí)現(xiàn)對(duì)Fat Jar jsp的支持,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
SpringBoot常見(jiàn)錯(cuò)誤圖文總結(jié)
最近在使用idea+Springboot開(kāi)發(fā)項(xiàng)目中遇到一些問(wèn)題,這篇文章主要給大家介紹了關(guān)于SpringBoot常見(jiàn)錯(cuò)誤總結(jié)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
java 網(wǎng)絡(luò)編程之TCP通信和簡(jiǎn)單的文件上傳功能實(shí)例
下面小編就為大家分享一篇java 網(wǎng)絡(luò)編程之TCP通信和簡(jiǎn)單的文件上傳功能實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
scala 隱式轉(zhuǎn)換與隱式參數(shù)的使用方法
這篇文章主要介紹了scala 隱式轉(zhuǎn)換與隱式參數(shù)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
淺談Java關(guān)閉線程池shutdown和shutdownNow的區(qū)別
本文主要介紹了Java關(guān)閉線程池shutdown和shutdownNow的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
List集合按某個(gè)屬性或者字段進(jìn)行分組的操作
這篇文章主要介紹了List集合按某個(gè)屬性或者字段進(jìn)行分組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
java使用Validation進(jìn)行數(shù)據(jù)校驗(yàn)的方式總結(jié)
在Java中提供了一系列的校驗(yàn)方式,下面這篇文章主要給大家介紹了關(guān)于java使用Validation進(jìn)行數(shù)據(jù)校驗(yàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06

