【问题标题】:Sorting a nested map based on value of inner map [closed]根据内部地图的值对嵌套地图进行排序[关闭]
【发布时间】:2013-05-20 10:05:09
【问题描述】:

我想对完整的地图进行降序排序,地图的结构如下

SortedMap<String, SortedMap<String, Long>>

我想按内部SortedMap 的 Long 值排序。如何做到这一点?

谢谢。
编辑:地图更改为 SortedMap
内部地图将始终包含一个值。

【问题讨论】:

  • 你到底是什么意思?你会如何对{"A" =&gt; {"A1" =&gt; 1, "A2" =&gt; 4}, "B" =&gt; {"B1" =&gt; 2, "B2" =&gt; 3}} 进行排序?
  • 顺便说一句:hashMap 不是一个可排序的结构,它无论如何都是一个映射......
  • 我使用了 SortedMap 和 TreeMap 但这无助于获得所需的结果
  • 我不明白为什么我的票被否决了......

标签: java sorting map


【解决方案1】:

HashMap 无法排序。 TreeMap 是按键排序的,而不是按值排序的。

如果你想遍历地图的条目,按它们的值排序,那么我只需将所有条目复制到一个列表中,根据需要对该列表进行排序,然后遍历排序后的列表。

【讨论】:

  • 但这只会对内部地图进行排序。我需要根据内部地图的值对完整的内部+外部地图进行排序。如果排序不正确,数据将显示不正确
  • 这不是你问的。您问:我想对嵌套地图进行排序。对外部地图进行排序没有任何意义。如果内部地图有多个值(任何地图通常都有)怎么办?那么如何对条目进行排序呢?无论如何,答案都是一样的。将条目提取到列表中,并以您想要的任何方式对列表进行排序。不是对List&lt;Entry&lt;String, Long&gt;&gt; 进行排序,而是对List&lt;Entry&lt;String, HashMap&lt;String, Long&gt;&gt;&gt; 进行排序。
  • 内部地图只有一个值(这不能增加)。我需要对完整的地图进行排序。
  • 那么你有一个严重的设计问题。不要使用 HashMap 来保存键和值。使用具有 2 个属性的类。不过,我的答案仍然有效:将条目提取到列表中,然后对列表进行排序。
  • 我使用树形图和链接哈希图。得到了想要的结果。感谢您的支持
猜你喜欢
  • 1970-01-01
  • 2015-11-07
  • 2012-04-25
  • 2013-10-31
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多