从Java8流中获取N(3)个列表(基于枚举性别(男性、女性、其他)),并基于枚举过滤条件

从Java8流中获取N(3)个列表(基于枚举性别(男性、女性、其他)),并基于枚举过滤条件,java,collections,java-8,java-stream,Java,Collections,Java 8,Java Stream,如何基于性别枚举类型创建N个列表?如果我有3个可能的性别枚举(男性、女性、其他),我需要3个列表。如何使用Java8StreamsAPI实现这一点 在这种情况下,我需要一张有3个键的地图之类的东西。genderMap.get(GENDER.male) Map-genderMap; 用分割法审判 Map<Boolean, List<Person>> genderMap= people.stream().collect(Collectors.partitioningBy(m

如何基于性别枚举类型创建N个列表?如果我有3个可能的性别枚举(男性、女性、其他),我需要3个列表。如何使用Java8StreamsAPI实现这一点

在这种情况下,我需要一张有3个键的地图之类的东西。genderMap.get(GENDER.male)

Map-genderMap;
用分割法审判

Map<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");
}
Map genderMap=people.stream().collect(Collectors.partitionby(malepertise());
System.out.println(“男性”+genderMap.get(true));
System.out.println(“女性”+genderMap.get(false));
私有静态谓词{
返回p->p.getGender()!=null和&p.getGender().equalsIgnoreCase(“男性”);
}
私有静态谓词femalePredicate(){
返回p->p.getGender()!=null和&p.getGender().equalsIgnoreCase(“女性”);
}
  • 男性[个人[id=1,姓名=1,年龄=11,性别=男性,sal=100, 月费用金额=120.00],个人[id=2,姓名=SAMPLE_2,年龄=12, 性别=男性,sal=100,月费用金额=120.00]]
  • 女性[个人[id=0,姓名=0,年龄=10,性别=other,sal=100, 月费用金额=120.00],个人[id=3,姓名=SAMPLE_3,年龄=13, 性别=女性,sal=100,月费用金额=100.00],个人[id=4, 姓名=样本4,年龄=14,性别=女性,sal=100, monthlyExpenseAmount=100.00],个人[id=5,姓名=SAMPLE_5,年龄=15, 性别=女性,sal=100,月费用金额=100.00]]
使用
groupingBy()
toList()

Map genderMap=people.stream()
.collect(Collectors.groupingBy(Person::getGender,Collectors.toList());
请参见演示。

。partitioningBy()
用于将结果分成两组

你在找什么

Map genderMap=people.stream()
.collect(Collectors.groupingBy(Person::getGender));

或使用
groupingBy(java.util.function.function)
的重载,该重载默认为使用
toList
下游。
Map<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");
}
Map<Gender, List<Person>> genderMap = people.stream()
        .collect(Collectors.groupingBy(Person::getGender, Collectors.toList()));
Map<Gender, List<Person>> genderMap = people.stream()
     .collect(Collectors.groupingBy(Person::getGender));