如何使用 java 流按值对地图进行排序?

How to sort a Map by value with java stream?

我想按值对我的地图进行排序,但我不知道该怎么做。我有这段代码可以将值放入地图中:


Map<Tuple7<Integer, String, Double, String, String, String, String>, Double> grouped = joinFirst.stream().limit(60)
                .collect(groupingBy(t->Tuples.of(
                        t.get0().getCCustkey(),
                        t.get0().getCName(),
                        t.get0().getCAcctbal().doubleValue(),
                        t.get0().getCPhone(),
                        t.get3().getNName(),
                        t.get0().getCAddress(),
                        t.get0().getCComment()),
                        Collectors.summingDouble((t -> t.get2().getLExtendedprice().doubleValue()*(1-t.get2().getLDiscount().doubleValue()))
                        )));

我想按 summingDouble 中计算的值排序。

你能试试这个吗

 Map<Tuple7<Integer, String, Double, String, String, String, String>, 
Double> result2 = new LinkedHashMap<>();
    unsortMap.entrySet().stream()
            .sorted(Map.Entry.<Tuple7<Integer, String, Double, String, 
String, String, String>, Double>comparingByValue().reversed())
            .forEachOrdered(x -> result2.put(x.getKey(), x.getValue()));