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

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

我在试着整理 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()));

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

fxnxkyjh1#

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

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

相关问题