Java 8 Lambda-通过另一个集合筛选集合
我有一套Java 8 Lambda-通过另一个集合筛选集合,java,lambda,java-8,Java,Lambda,Java 8,我有一套用户名 和列出玩家 我想过滤掉那些不在阵容中的球员 我知道如何在Vanilla pre Java 8中实现这一点 List<Player> distinctPlayers = new ArrayList<Player>(); for(Player p : players) { if(!usernames.contains(p.getUsername()) distinctPlayers.add(p); } 这不能编译。“无法解析方法getUserna
用户名
和列出玩家
我想过滤掉那些不在阵容中的球员
我知道如何在Vanilla pre Java 8中实现这一点
List<Player> distinctPlayers = new ArrayList<Player>();
for(Player p : players) {
if(!usernames.contains(p.getUsername()) distinctPlayers.add(p);
}
这不能编译。“无法解析方法getUsername()”您将lambda表达式放在错误的位置-过滤器的整个参数应为lambda表达式。换句话说,“给定一个玩家
p
,我是否应该过滤它?”
公牛!我知道我错过了一些简单的事情。谢谢#feelsAshamedHi,我使用的是EXACT场景,但它显示了编译错误,在封闭范围中定义的“局部变量”用户名必须是最终的或有效的最终的“@vijayakumar:很可能您正在修改方法中的某个地方的
用户名
。。。在没有看到代码的情况下,很难再多说些什么。也许你应该问一个新问题(在研究了错误信息之后)
players.stream().filter(!usernames.contains(p -> p.getUsername()))
.collect(Collectors.toList());
players.stream().filter(p -> !usernames.contains(p.getUsername()))