当前位置: 首页 > 面试题库 >

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

周朗
2023-03-14
问题内容

我有一个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()))


 类似资料:
  • 问题内容: 我想问一下是否有可能使用hibernate方式做到这一点。假设我已经运行了HQL并检索了一个集合。是否可以使用hibernate进一步过滤它? 我试图在标头类中使用,并在查询之前添加session.enable(),但似乎无法正常工作。 样例代码 精简HQL 问题答案: 不。至少不是您问的方式。一旦您要求Hibernate(使用方法)访问数据库,Hibernate就发挥了作用,结果现在

  • 问题内容: 我有这样的实体: 还有一个: 使用Criteria API,我想获得带有过滤的Picturs集的唯一AlbumD。我尝试这样的事情: 在这里,我得到了带有所有关联图片的相册。它们根本没有被过滤。当我尝试执行记录器打印的查询时,只有给定eventId的图片数量只有四行,但是在“相册”中,我获取了所有图片。 我也尝试了其他ResultTransformers,但最终得到了很多结果(4),但

  • 我有一个简单的可编辑的JComboBox,当您键入时,它过滤可用的选择。除了一些奇怪的情况外,它几乎可以工作,例如,当你键入“Sass”时,它将可用的选择过滤到一个“Sassi di Matera”,但如果你选择它,它将选择“Arte ruprestre della Vacamonica”,它碰巧是原始模型的第[0]项,而不是过滤后的模型的第[0]项。 我试着调试了几个小时,但似乎是一些奇怪的up

  • 有没有办法把这两条流合并成一条?我使用第一个流在嵌套列表中进行过滤和查找,并使用第二个流根据流的结果创建地图。我想知道是否有一种方法可以用一条流来实现这一点。 像这样的

  • 本文向大家介绍Java 通过位运算求一个集合的所有子集方法,包括了Java 通过位运算求一个集合的所有子集方法的使用技巧和注意事项,需要的朋友参考一下 Java没有自带的求一个集合的所有子集的方法,我们可以通过集合的子集规律来求。 一个集合的所有子集等于2^该集合的长度。比如{c,b,a}的长度为3,这个集合的子集就有8个。 这句话看起来很简单,但同时也隐含着高深的哲理。其实一个集合的所有集合,和

  • 我使用的是spring数据mongodb。 这是我的控制器方法: 控制器: 这里我将字符串列表作为请求参数传递。 我的服务方式是: 存储库代码: 在这里,我在存储库中的查询总是返回空数组[]。我不知道这个查询有什么问题。 我的请求URL是: