在树形图

时间:2016-06-10 18:26:57

标签: java sorting hashmap treemap

我有以下树形图

private TreeMap<Long, HashMap<Long, Entry>> index;

条目包含:

int tf //count
ArrayList<long> off //positions

对于树形图中的每个条目,我想用tf对哈希图进行排序。在下面的图片中,[3]的tf具有更大的[0]的tf值,所以我想把它移动到开始。我怎么能这样做?

enter image description here

3 个答案:

答案 0 :(得分:0)

我认为你问题的根本问题在于HashMaps根据定义是不可排序的。其次,更通用的变量定义可能有用:

private SortedMap<Long, SortedMap<Entry, Long>> index;

注意到我切换了Entry和Long的顺序。这是因为地图仅基于密钥进行排序。在实例化Map时,您必须使Entry实现Comparable或提供自定义Comparator。

答案 1 :(得分:0)

您无法订购HashMap。试图这样做会破坏HashMap存储的方式并找到添加到其中的元素

答案 2 :(得分:0)

你在这里尝试做的事情(据我所知)是通过其值对树图进行排序,而TreeMap只能按其键进行排序。更多详情 - TreeMap sort by value

您可以尝试编写自己的排序方法,并将排序结果存储在linkedHashMap中,而不是Treemap中。这样,您就可以按照将其添加到linkedHashMap的确切顺序访问条目。 注意:每次更改都会发生在原始地图上,您需要对其进行排序并将其移动到其他的LinkedHashMap。这是非常笨拙的。

您可以考虑为您的程序使用不同的对象模型。