gpt4 book ai didi

java - 使用流内的流检查进行过滤

转载 作者:行者123 更新时间:2023-12-01 20:07:39 24 4
gpt4 key购买 nike

以下程序仍然打印 frank, jake, justinpersie,其中不应包含 justin,因为他已被列入黑名单。

List<String> blacklists = new ArrayList<>(Arrays.asList("mike", "ryan", "carl", "justin"));
List<String> names = new ArrayList<>(Arrays.asList("frank", "jake", "justin", "persie"));

List<String> validatedNames = names.stream()
.filter(name ->
blacklists.stream()
.anyMatch(blacklist -> !blacklist.equals(name))
)
.collect(Collectors.toList());

validatedNames.forEach(name -> System.out.println(name));

最佳答案

错误在这一行:

.anyMatch(blacklist -> !blacklist.equals(name))

每个名字在黑名单中都有一些不匹配的项目,因此它们都会通过。您需要像这样反转条件:

.noneMatch(blacklist -> blacklist.equals(name))

但是整个内部流确实没有必要。只需使用List.contains():

List<String> validatedNames = names.stream()
.filter(name -> !blacklists.contains(name))
.collect(Collectors.toList());

如果您愿意修改名称,则可以完全跳过该流:

names.removeAll(blacklists);

关于java - 使用流内的流检查进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47193891/

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