java—如何通过将值放在具有相等值的值的后面来对hashmap进行排序

e0bqpujr  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(297)

我在试着整理 tableProbability Map到一个名为 sorted . 在 tableProbability 数值如下:
键值M0.1u0.3l0.3t0.2i0.1
我有下面的代码对 Map ```
LinkedHashMap<Character, Double> sorted = new LinkedHashMap<>();
tableProbability.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));

但我最终得到的是下面的Map
键值10.3u0.3t0.2i0.1m0.1
我应该得到的是:
键值U0.3l0.3t0.2m0.1i0.1
有没有办法保留重复的顺序,或者至少当它找到一个重复的时候,把它放在一个相同的价值?
fxnxkyjh

fxnxkyjh1#

你可以这样做。这是常见的操作。如果你想退货 TreeMap ,您可以在下面指定它。并且通常分配给接口类型。为了一个 TreeMap 会的 NavigableMap .

Map<Character, Double> sorted =
        tableProbability.entrySet().stream()
                .sorted(Map.Entry.comparingByValue(
                        Comparator.reverseOrder()))
                .collect(Collectors.toMap(Entry::getKey,
                        Entry::getValue,
                        (a,b)->a, // merge, not used here but
                                  // syntactically required
                        LinkedHashMap::new // type of map to return
                        ));

相关问题