java - java中按值对Map进行排序

标签 java sorting dictionary

我的目标是给定一个映射,以返回排序键值的升序数组/列表。例如:

输入:包含以下由空格分隔的键/值条目的映射:

"Apple" 10
"Orange" 8
"Kiwi" 15

输出:

{Orange;Apple;Kiwi}

我能想到的唯一其他方法是创建一个 Map<Integer,Set<String>>然后按相当复杂的键进行排序。我采用了这种方法,但在代码和逻辑方面似乎效率很低。非常感谢!

最佳答案

一种技术是将映射插入列表,然后使用比较器对值进行排序,然后再将其放回到映射中。

例如:

List<Map.Entry<String, Integer>> list = 
            new LinkedList<Map.Entry<String, Integer>>(mapYouPassedIn.entrySet());

然后您可以使用 Collections.sort() 加上比较器来对此列表执行繁重的工作。

关于java - java中按值对Map进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28163279/

相关文章:

JAVA变量超出范围

Python:使用 lambda 以 str 格式对日期时间进行排序

swift - 如何按值对字典进行排序?

c - 在c中递归拆分数组

python - 我如何使字典中的每个 "users"成为一个键以及它们属于它的值的所有 "groups"?

java - 我想交换文本 TextFields

java - catch block 后如何询问用户输入

Python:如何处理不可订阅的对象?

python - Pandas:如果列中的值是字典,则使用 groupby

java - 我如何在java中使用splitter ^