gpt4 book ai didi

Java 8 Lambda - 按另一个集合过滤集合

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:19 25 4
gpt4 key购买 nike

我有一个 Set<String> usernamesList<Player> players

我想过滤掉那些不在集合中的玩家。

我知道如何在 Java 8 之前的 Vanilla 中执行此操作

List<Player> distinctPlayers = new ArrayList<Player>();

for(Player p : players) {
if(!usernames.contains(p.getUsername()) distinctPlayers.add(p);
}

我正在尝试使用 Lambda 表达式编写这段简单的代码,但我正在努力获取 usernames.contains()在过滤器中工作

players.stream().filter(!usernames.contains(p -> p.getUsername()))
.collect(Collectors.toList());

这不会编译。 “无法取消方法 getUsername()”

最佳答案

你在错误的地方得到了 lambda 表达式 - filter 的整个参数应该是 lambda 表达式。换句话说,“给定一个播放器 p,我应该过滤还是不过滤?”

players.stream().filter(p -> !usernames.contains(p.getUsername()))

关于Java 8 Lambda - 按另一个集合过滤集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170264/

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