Java流-筛选为三个单独的列表/或groupBy,但仅当在enum中时

Java流-筛选为三个单独的列表/或groupBy,但仅当在enum中时,java,java-8,java-stream,Java,Java 8,Java Stream,我不确定是否有可能在流中这样做。但是,对于for循环和多个ifs,问题很简单,但是希望转移到streams。 我基本上想根据国家/地区将一个列表拆分为3个不同的列表,如果该国家/地区在枚举中 所以我有一个3个值的枚举,比如说国家So->countries={阿尔及利亚、印度、西班牙} 我有一个say people对象列表,其中person.getCountry返回他们的国家 我有3个要填充的结果列表 List <String> algeriaList; List <String

我不确定是否有可能在流中这样做。但是,对于for循环和多个ifs,问题很简单,但是希望转移到streams。 我基本上想根据国家/地区将一个列表拆分为3个不同的列表,如果该国家/地区在枚举中

所以我有一个3个值的枚举,比如说国家So->countries={阿尔及利亚、印度、西班牙}

我有一个say people对象列表,其中
person.getCountry
返回他们的国家

我有3个要填充的结果列表

List <String> algeriaList;
List <String> indiaList;
List <String> spainList;
List代数列表;
独立主义者名单;
名单;
我想筛选国家/地区枚举中的列表,然后根据国家/地区将其分为3个不同的列表:
[阿尔及利亚{}、印度{}和西班牙{}]

我知道可以简单地使用for循环和if语句来完成,但我更喜欢使用stream


提前感谢

首先筛选列表,仅包含您感兴趣的国家/地区的人员:

Set<CountryType> COUNTRIES_OF_INTEREST = Set.of(ALGERIA, INDIA, SPAIN);

peopleList.stream()
    .filter(p -> COUNTRIES_OF_INTEREST.contains(p.getCountry())

这将为您提供一个
映射

在这种情况下,我可能会使用
枚举集
    .collect(groupingBy(Person::getCountry));