【发布时间】:2015-09-10 08:07:22
【问题描述】:
边学边学 Java(Python 背景)。 Java 7 代码中的简单字数统计程序(不能使用 J8!)。
我有一个 word:count 对的哈希图。现在我需要按计数(递减顺序)排序,并打破按字母顺序使用单词的关系。
已阅读 s/o,我尝试了一个树形图,但它似乎不能很好地处理关系,所以我认为这是不对的。
我已经看到发布了许多定义新类 sortbyvalue 并定义比较器的解决方案。这些对我不起作用,因为我需要将解决方案全部包含在现有类中。
我正在寻找有关此想法的反馈:
- 遍历哈希图中的映射条目(我)
- 使用 me.getKey = K 和 me.getValue = V
- new Map.Entry reverse_me = (V,K) {不确定这个语法}
- 将 reverse_me 添加到列表中
- 在地图上为我重复一遍
- List.sort { 这是我不确定的地方,关于如何排序,不知道如何编写比较器。此时每个 List 元素将是一个 (count, word) 对,并且 sort() 应该按 count 递减排序,然后在相同计数的情况下按单词按字母顺序排序)
这将是最终输出。
这是合乎逻辑的进展吗?我可以从许多帖子中看出,关于如何做到这一点有很多意见,但这是我可以总结的一个。
另外,不能用番石榴。
【问题讨论】:
-
TreeMap完美地处理关系(但排序发生在键上,当然不是值,使用TreeSet进行值排序),错误很可能与您的代码有关。另一方面,HashMap不能保留订单(LinkedHashMap除外,但即使这样也无法排序)。 -
首先,在java,您需要了解
Collections.sort(...)、Comparator和Comparable。您将需要这些知识来解决您的问题。
标签: java sorting collections hashmap