-1

我希望找到一种优雅的方式,先按值排序地图,然后按键排序。

例如:

乙| 50

一个 | 50

C | 50

E | 10

D | 100

F | 99

我有以下代码:

// Making the map into a list first
List<Map.Entry<String, Integer>> sortingList = new LinkedList<>(processMap.entrySet()); 

// Create a comparator that would compare the values of the map
Comparator<Map.Entry<String, Integer>> c = Comparator.comparingInt(Map -> Map.getValue());

// Sort the list in descending order
sortingList.sort(c.reversed());

我不需要再次映射结果,所以这就足够了,但是,我的结果是:

D | 100

F | 99

乙| 50

一个 | 50

C | 50

E | 10

我想不仅按值排序,还按键排序,因此结果变为:

D | 100

F | 99

一个 | 50

乙| 50

C | 50

E | 10

我研究了一些可能的解决方案,但问题是,我的值需要降序,但我的键必须升序......

希望有人可以帮助我。

4

1 回答 1

0

尝试这个:

Comparator<Map.Entry<String, Integer>> c = Comparator.comparing(Map.Entry<String, Integer>::getValue)
                                                     .reversed()
                                                     .thenComparing(Map.Entry::getKey);
于 2020-05-18T16:35:56.740 回答