gpt4 book ai didi

java - Java中列表列表中的最大值

转载 作者:行者123 更新时间:2023-12-01 06:48:40 25 4
gpt4 key购买 nike

我试图通过应用过滤器来获得最高值

我有一个对象,其中包含团队对象和卡片列表。所以我需要从卡牌重量属性中的卡牌列表中获取最高值,其中球队为A,并返回玩家。

public class Player {
private String name;
private List<Card> cards;
private Team team;
// getters and setters
}

public class Team {
private int id;
private int points;
// getters and setters
}

public class Card {
private int weightCard;
// getters and setters
}

我试图执行的代码

int maxPointsTeamA = players
.stream()
.filter( x -> x.getTeam().equals(teamA))
.map(n -> n.getCards()
.stream()
.map( c -> c.getWeigthCard()).max(Comparator.naturalOrder()));

players 是玩家列表(4 名玩家)

错误:

Type mismatch: cannot convert from Stream<Object> to int

请帮帮我,这是为了学术工作

最佳答案

对于初学者来说,将两个 map 调用替换为 mapToInt。那么您就不需要 Comparator.naturalOrder()

其次,您的第一个映射调用包含此 lambda:

n -> n.getCards().stream().map(c -> c.getWeightCard())

这会将单个“n”(无论它是什么)转换为任何权重卡返回的流(这不是您粘贴的代码)。 map 的要点是将一个事物转变为另一个事物,而不是事物流。您可以使用 flatmap 来代替,因此大概,首先将 flatMap 映射到卡片流,然后通过 Weightcard 函数将其映射到 int,然后您可以 max。

把它们放在一起:

int maxPointsTeamA = players
.stream()
.filter(x -> x.getTeam().equals(teamA))
.flatMap(n -> n.getCards().stream())
.mapToInt(c -> c.getWeightCard())
.max()
.orElse(0);

编辑:啊,是的,我忘记了 max() 返回一个OptionalInt;已修复。

关于java - Java中列表列表中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60698922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com