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

我有一个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-通过另一个集合过滤集合 的全部内容, 来源链接: utcz.com/qa/430007.html

回到顶部