Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分类地图上的操作_Java_Java 8_Java Stream - Fatal编程技术网

Java 分类地图上的操作

Java 分类地图上的操作,java,java-8,java-stream,Java,Java 8,Java Stream,我必须实现方法maxPricePerProductType,该方法返回产品类型投标的最高价格,产品按字母顺序排序。不考虑未投标的产品。该方法的原型为: public SortedMap<String, Integer> maxPricePerProductType() { //use toMap return null; } 但是我不知道如何继续,或者这部分是否正确。这有点误导了什么private-Map-groups=new-HashMap()和Map bids=new

我必须实现方法
maxPricePerProductType
,该方法返回产品类型投标的最高价格,产品按字母顺序排序。不考虑未投标的产品。该方法的原型为:

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

    return null;
}

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

这有点误导了什么
private-Map-groups=new-HashMap()
Map bids=newhashmap()等待。如果这些映射中的键是
B1、B2…
G1、G2…
——实际名称,那么您并不真正需要它们——因为这些信息都存在于它们中。所以这些应该是
List
s

如果还有其他内容,您可以使用:

 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))));
SortedMap结果=组
.values()
.stream()
.filter(g->g.getBids()!=null | |!g.getBids().isEmpty())
.flatMap(g->g.getBids().values().stream())
.collect(收集器.groupingBy(b->b.getGroup().getProductType(),
树映射::新的,
Collectors.mapping(Bid::getPrice,
Collectors.collectionAndThen(Collectors.maxBy(Comparator.naturalOrder()),可选::get));

这有点不清楚。地图上的字符串是什么?组?(G1、G2等)投标?(B1、B2等)您如何知道投标来自同一组或同一产品?这只是首字母吗?您会说,“不考虑没有出价的产品”。它们是否完全不在映射中,或者表示为映射为null或零的字符串?映射的键应该是什么?产品类型或投标名称?我这样问是因为你说应该是出价的名称,但是你怎么知道出价属于哪种产品类型呢?@DavidConrad不幸的是,练习的文本有点不清楚。然而,我认为产品类型严格地与组连接,例如,如果只有一组想要购买鞋子,而且没有任何出价,那就意味着我不必考虑鞋子,他们也不在地图上。地图的关键是出价的名称,正如我在下面写的,值是出价的价格
public SortedMap<String, Integer> maxPricePerProductType() { //use toMap
    return groups.values().stream().
            flatMap(g -> g.bids.values().stream())
            .
             ;
}
 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))));