反向排序HashMap?

Ben*_*nao 2 java sorting generics hashmap comparator

所以我遇到了这种能够按值对HashMaps进行排序的方法.

public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
        return map.entrySet()
                .stream()
                .sorted(Map.Entry.comparingByValue())
                .collect(Collectors.toMap(
                        Map.Entry::getKey,
                        Map.Entry::getValue,
                        (e1, e2) -> e1,
                        LinkedHashMap::new
                        ));
    }
Run Code Online (Sandbox Code Playgroud)

我想使用该reversed()方法,Comparator但我似乎找不到合适的地方.

Mur*_*nik 5

reversed()应该在Comparator返回的方法上调用该方法comparingByValue().遗憾的是,Java的类型推断在这里分解,因此您必须指定泛型类型:

public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue
    (Map<K, V> map) {

    return map.entrySet()
            .stream()
            .sorted(Map.Entry.<K, V> comparingByValue().reversed())
            // Type here -----^ reversed() here -------^
            .collect(Collectors.toMap(
                    Map.Entry::getKey,
                    Map.Entry::getValue,
                    (e1, e2) -> e1,
                    LinkedHashMap::new
            ));
}
Run Code Online (Sandbox Code Playgroud)

  • @BenArnao这正是为什么在你的问题中包含你所尝试的内容以及你为什么尝试的原因没有奏效的明确描述通常是一个好主意. (3认同)
  • 谢谢,这正是我需要的。我尝试在那个地方使用 reversed() 但它不起作用,因为我必须指定类型。 (2认同)