亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 java 8 流中獲取 N(3) 個列表(基于 ENUM 性別)并根據 ENUM 過濾條件

從 java 8 流中獲取 N(3) 個列表(基于 ENUM 性別)并根據 ENUM 過濾條件

慕娘9325324 2023-03-17 13:57:49
如何根據性別枚舉類型創建 N 個列表?如果我有 3 個可能的 GENDER 枚舉(男性、女性、其他),我需要 3 個列表。如何使用 java 8 流 API 實現此目的?在這種情況下,我需要像帶有 3 個鍵的 MAP 之類的東西。genderMap.get(GENDER.male)。Map<GENDER, List<Person>> genderMap;嘗試使用 partitioningByMap<Boolean, List<Person>> genderMap= people.stream().collect(Collectors.partitioningBy(malePredicate()));System.out.println("MALE "+genderMap.get(true));System.out.println("FEMALE "+genderMap.get(false));private static Predicate<Person> malePredicate(){    return p ->  p.getGender() != null && p.getGender().equalsIgnoreCase("male");}private static Predicate<Person> femalePredicate(){    return p ->  p.getGender() != null && p.getGender().equalsIgnoreCase("female");}MALE [Person [id=1, name=SAMPLE_1, age=11, gender=male, sal=100, monthlyExpenseAmount=120.00], Person [id=2, name=SAMPLE_2, age=12, gender=male, sal=100 , monthlyExpenseAmount=120.00]]FEMALE [Person [id=0, name=SAMPLE_0, age=10, gender=other, sal=100, monthlyExpenseAmount=120.00], Person [id=3, name=SAMPLE_3, age=13, gender=female, sal=100 , monthlyExpenseAmount=100.00], 人 [id=4, name=SAMPLE_4, age=14, gender=female, sal=100, monthlyExpenseAmount=100.00], Person [id=5, name=SAMPLE_5, age=15, gender=female , sal=100, monthlyExpenseAmount=100.00]]
查看完整描述

2 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

使用groupingBy()toList()

Map<Gender, List<Person>> genderMap = people.stream()
        .collect(Collectors.groupingBy(Person::getGender, Collectors.toList()));

演示見IDEONE 。


查看完整回答
反對 回復 2023-03-17
?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

.partitioningBy()用于將結果分成 2 組。

你在找.groupingBy()

Map<Gender, List<Person>> genderMap = people.stream()
     .collect(Collectors.groupingBy(Person::getGender));


查看完整回答
反對 回復 2023-03-17
  • 2 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號