gpt4 book ai didi

Java 8 : Filtering Map 按人的状态列出

转载 作者:行者123 更新时间:2023-11-30 06:14:05 25 4
gpt4 key购买 nike

我正在尝试过滤 Map<Long, Person> people并仅返回状态为 SUBSCRIBED 的这些人的 ID在List<Long> .这是老式的代码:

public List<Long> getSubscribedPeople() {
final List<Long> subscribedPeople = new ArrayList<>();

for (final Map.Entry<Long, Person> entry : subscribedPeople.entrySet()) {
if (entry.getValue().getStatus() == PersonStatus.SUBSCRIBED) {
subscribedPeople.add(entry.getKey());
}
}

return subscribedPeople;
}

Person 类如下所示:

class Person {
private Long id;
private PersonStatus status;

// getters and setters
}

我尝试了以下方法,但这只给了我一个 List<Entry<Long, Person>> :

public List<Long> getSubscribedPeople() {
return people.entrySet()
.stream()
.filter(e -> e.getValue().getStatus() == PersonStatus.SUBSCRIBED)
.collect(Collectors.toList());
}

我必须 map流以某种方式?

最佳答案

在收集之前,将条目流映射到它的键。否则你将有一个条目流。

public List<Long> getSubscribedPeople() {
return people.entrySet() // set of entries
.stream() // stream of entries
.filter(e -> e.getValue().getStatus() == PersonStatus.SUBSCRIBED) // stream of entries
.map(e -> e.getKey()) // stream of longs
.collect(Collectors.toList()); // list of longs
}

关于Java 8 : Filtering Map<Long, Person> 按人的状态列出 <Long>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30921334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com