【问题标题】:Sort hasmap by value inside of a treemap按树形图中的值对哈希图进行排序
【发布时间】:2016-10-11 19:38:14
【问题描述】:

我有以下树形图

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

条目包含:

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

对于树形图中的每个条目,我想按 tf.在下图中,[3] 的 tf 具有更大的 [0] 的 tf 值,因此我想将其移至开头。我该怎么做?

【问题讨论】:

    标签: java sorting hashmap treemap


    【解决方案1】:

    我认为您的问题的根本问题是 HashMaps 不能按定义排序。其次,更通用的变量定义可能会很有用:

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

    注意到我交换了 Entry 和 Long 的顺序。这是因为 Maps 仅根据键进行排序。当您实例化该 Map 时,您必须使 Entry 实现 Comparable 或提供自定义 Comparator。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        您不能订购 HashMap。尝试这样做会破坏 HashMap 存储和查找添加到其中的元素的方式

        【讨论】:

          猜你喜欢
          • 2016-03-26
          • 1970-01-01
          • 1970-01-01
          • 2015-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-16
          相关资源
          最近更新 更多