StackOverflow 中提出了许多关于按键或值对 Hashmap 进行排序的问题。其中大部分已发布多年。例如,this , this ,和this 。我正在寻找任何在线方法来按值对 Hashmap 键进行排序并获取排序后的键的数组。在 iOS 中,以下代码行会产生相同的结果:
NSArray* sortedKeys = [myDictionary keysSortedByValueUsingSelector:@selector(compare:)]};
在这里,如果 NSDictionary
myDictionary 包含以下对象:
{
S: 1;
A: 5;
N: 8;
T: 2;
O: 0;
}
然后是sortedKeys
包含以下对象:
(N, A, T, S, O)
最新的Java中可以使用这种方法吗?我应该遵循冗长的解决方案吗?给出了冗长的解决方案 here产生一个排序的 Hashmap(键按各自的值排序)。如果我使用 keySet()
提取此排序 Hashmap 的键,排序键的顺序是否仍然存在? ?
谢谢!
最佳答案
使用流,您可以编写:
List<String> keys = map.entrySet().stream()
.sorted(Entry.comparingByValue())
.map(Entry::getKey)
.collect(toList());
它比您的 iOS 示例长一点,但也没有那么糟糕。
要以相反的顺序获取列表,您可以使用相反的顺序比较器:
.sorted(Collections.reverseOrder(Entry.comparingByValue()))
关于java - 内置的短方法来获取按 Java 中的值排序的 Hashmap 键数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52000047/