gpt4 book ai didi

java - 如何使用流 API 将两个过滤器应用于一个列表

转载 作者:行者123 更新时间:2023-12-02 14:29:35 25 4
gpt4 key购买 nike

我想向列表添加第二个过滤器,我想排除字符串列表中重复项旁边的空字符串。

这是我使用流 API 进行的尝试:

这将区分结果,但不会区分空

List<User> users = userService.getUsers(form.getId());
List<String> positionNames = users.stream().map(User::getTitle).distinct().collect(Collectors.toList());

如何将它们组合在一起?

最佳答案

您可以使用过滤器仅保留非空字符串:

List<String> positionNames = users.stream()
.map(User::getTitle)
.distinct()
.filter(s -> !s.isEmpty())
.collect(Collectors.toList());

如果您不关心顺序,则收集到 Set 与使用 distinct() 具有相同的效果:

Set<String> positionNames = users.stream()
.map(User::getTitle)
.filter(s -> !s.isEmpty())
.collect(Collectors.toSet());

编辑:如果某些用户的标题为 null,您可能还想将其过滤掉:

Set<String> positionNames = users.stream()
.map(User::getTitle)
.filter(s -> s != null && !s.isEmpty())
.collect(Collectors.toSet());

或者调用filter两次:

Set<String> positionNames = users.stream()
.map(User::getTitle)
.filter(Objects::nonNull)
.filter(s -> !s.isEmpty())
.collect(Collectors.toSet());

关于java - 如何使用流 API 将两个过滤器应用于一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45223574/

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