【问题标题】:I am trying to sort my nested hashmap using values in java but couldn't get it我正在尝试使用 java 中的值对嵌套的哈希图进行排序,但无法获取
【发布时间】:2021-02-18 02:11:54
【问题描述】:

这是我的示例 hashmap 详细信息,需要根据结束整数值的数字进行排序。

Input:

{First={
       How={H=9},
       Are={A=1}, 
       You={U=325}},    
Second={
       Are={A=19}, 
       You={U=110}, 
       HOW={H=3}}
}


Expected output should be:

{First={
       You={U=325}       
       How={H=9},
       Are={A=1}}, 
Second={
       You={U=110}
       Are={A=19}, 
       HOW={H=3}}
}

有什么办法可以做到这一点?

【问题讨论】:

    标签: java list arraylist hashmap treemap


    【解决方案1】:

    java.util.HashMap 基本上是一个无序的概念。 LinkedHashMap(子类)按插入顺序排序:如果先添加 [k1,v1],然后添加 [k3,v3],然后添加 [k2,v2],如果您遍历其 .keySet() 或 @,这也是它们报告的确切顺序987654327@,或其.entrySet()

    还有java.util.TreeMap 对输入进行排序:如果添加[k1,v1],然后添加[k3,v3],然后添加[k2,v2],它将返回[k1,k2,k3],例如询问它的.keySet(),假设您在构建按该顺序对 k1/k2/k3 进行排序的树形图时提供了一个比较器,或者键的类型具有自然顺序并且这就是它的排序方式。

    无法按值排序。在尝试为您的 TreeMap 提供比较器时,您不能涉及与您的键关联的值。

    因此,您想要的(拥有一个根据值的某些属性排序的 jumap,使用 java.util 包中提供的基本工具)是不可能的,除非您自己手写一个完整的 map 实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多