Java 8 Lambda-通过另一个集合过滤集合
我有一个Set<String> usernames
和List<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