当前位置: 首页 > 知识库问答 >
问题:

在带有流的列表中收集最大值的对象[重复]

劳通
2023-03-14

我几乎完成了我的大学扑克项目,但我仍然有点挣扎与java流。我写了一个HandEvaluator类,它计算每个玩家手的强度,并将其分配给玩家。现在我正在尝试添加一个或多个玩家(如果一个以上的玩家有相同的分数/分裂锅)最高的手牌分数到一个列表中来计算Winnigs。

playerList.stream().max(Comparator.comparing(Player::getHandScore)).get();

共有1个答案

梁丘弘
2023-03-14

一个容易理解的解决方案如下:

int maxHighScore = playerList.stream()
                             .map(player -> player.getHandScore())
                             .max()
                             .orElse(-1);

List<Player> highestHandScores = playerList.stream()
                                           .filter(player -> player.getHandScore() == maxHighScore)
                                           .collect(Collectors.toList());

在第一步中,我们得到maxHighScore,在第二步中,我们过滤玩家,只保留那些得分最高的玩家。

 类似资料:
  • 我必须得到包含最大值的对象列表。Java8中的比较器max只返回一个对象。 为了做到这一点,我必须流式地显示两次列表: 这个解决方案有效。我想有一个更好的方法来解决这个问题,但我想不出来。

  • 我需要筛选我的对象列表: 以便将具有相同和的所有对象合并到具有以下属性的单个对象中: 作为所有值的和 作为所有值的字符串级联 所以结果是: Java 8中的溪流有可能做到吗? 我尝试了几种方法(例如,还使用),但我没有找到解决方案! 谢谢 编辑: 下面是我尝试的: 但由于某种原因,在计算过程中,我在上得到了,无论如何,我非常肯定这不是一个有效的解决方案。

  • 我想用Java8lambda表达式在java列表中找到max值,所以,我有一个类叫TicketMaster,项表是TicketMasterLog,在TicketMasterLog类中我有StatusMaster类的statusId引用列,所以这里我想在TicketMasterLog列表中找到max statusId,下面我给出我的代码请参考 而TicketMasterItem表是 因此,在列表中,

  • 我有这个代码: 它产生的是 很高兴我应该如何写映射方法来得到一个地图,它会给我:

  • 问题内容: 给定以下课程(针对问题的简化): 我有一个包含该类的多个实例的实例,同一类型出现多次,但得分不同: 现在,我想收集流,以便结果仅包含每种类型得分最高的实例。 我尝试了什么 以下代码可以正常工作,但是我不确定它是否是“最佳”解决方案(除了可怕的阅读和格式设置): 和: 输出(正确): A:10 B:12 C:1 另外,我无法提取返回收集器的通用静态方法,因此我可以通过以下方式简单地在需要

  • 我最近接触了Java 8和它的Stream API,最近又接触了它的Collectors API,我发现它有潜力对Stream进行很多很多的转换,但我有一个情况,我不确定Java 8是否可能,甚至根本不可能。我有两个类: 我想知道是否可以从ClassA对象列表中生成一个ClassB对象的分组列表,该列表的值是从ClassA的字段中计算出来的。具体而言: 通过group和ID组合对类进行分组 当关键