gpt4 book ai didi

java - sortedMap 上的操作

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:54 25 4
gpt4 key购买 nike

我必须实现方法 maxPricePerProductType 返回产品类型的最高出价,产品按字母顺序排序。没有出价的产品不予考虑。方法原型(prototype)为:

public SortedMap<String, Integer> maxPricePerProductType() { //use toMap

return null;
}

我的课是

public class GroupHandling {
private Map<String, Group> groups = new HashMap<>();

public SortedMap<String, Integer> maxPricePerProductType() { //use toMap

return null;
}
}

public class Group {
private String name;
String productType;
Map<String, Bid> bids = new HashMap<>();

public String getProductType() {
return productType;
}
}
public class Bid {
String name;
Group g;
int price;

public int getPrice() {
return price;
}

public String getProductType(){
return g.productType;
}
}

每个组都有兴趣购买某种类型的产品,并且在 map bids 中注册了该组必须购买的产品的选项。例如,Group G1 想要购买智能手机,他们有 3 个出价:B1、B2 和 B3。 B1 10,B2 15,B3 7。G2 也想买智能手机。它有2个出价。 B4 的成本为 5,B5 的成本为 20。所以我必须将 B1、B2、B3、B4 和 B5(因为它们都是同一产品类型的出价)添加到排序映射 B5 作为键,将 20 作为值。简而言之,我需要从每个组中获取出价,按产品类型对它们进行分组,然后将价格最高的那个添加到已排序的 map 中。这是我尝试做的:

public SortedMap<String, Integer> maxPricePerProductType() { //use toMap
return groups.values().stream().
flatMap(g -> g.bids.values().stream())
.
;
}

但我不知道如何继续,或者这部分是否正确。

最佳答案

这有点误导 private Map<String, Gruppo> groups = new HashMap<>();Map<String, Bid> bids = new HashMap<>();捕获。如果这些映射中的键是 B1, B2...G1, G2... - 实际名称,而不是你真的不需要它们 - 因为无论如何这些信息都存在于它们中。所以这些应该是List

如果还有别的东西,你可以使用:

 SortedMap<String, Integer> result = groups
.values()
.stream()
.filter(g -> g.getBids() != null || !g.getBids().isEmpty())
.flatMap(g -> g.getBids().values().stream())
.collect(Collectors.groupingBy(b -> b.getGroup().getProductType(),
TreeMap::new,
Collectors.mapping(Bid::getPrice,
Collectors.collectingAndThen(Collectors.maxBy(Comparator.naturalOrder()), Optional::get))));

关于java - sortedMap 上的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44866021/

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