按日期排序哈希映射

时间:2017-02-25 17:20:50

标签: java sorting hashmap

这是我的json:

[
{"name": "John Smith","date":"2017-02-02T23:07:09Z","id":"1223234"}
{"name": "John Doe","date":"2015-07-03T21:05:10Z","id":"3242342"},
{"name": "Jane Fan","date":"2016-12-22T13:27:19Z","id":"2123444"}
]

我已将上面的内容转换为hashmap。现在我想对日期值上的项目进行排序。

是否有内置功能可以帮助我实现这一目标?像例如用Python排序

1 个答案:

答案 0 :(得分:5)

  

我已将上面的内容转换为hashmap。

我建议你不要这样做。我建议您将其转换为List<Person>,其中每个Person都有一个名称,日期和ID。 (如果不是Person则是其他类。)作为列表而不是地图更有意义,因为这正是JSON所显示的:对象列表,每个对象都有名称,日期和ID。我个人将日期设为java.time.Instant或类似的东西,但这是另一回事。

此时,您需要做的就是实现按日期比较对象的Comparator<Person>,或者以相同的方式使Person实现Comparable<Person>。在这种情况下,使用单独的Comparator<Person>感觉更合适,因为按名称或ID对List<Person>进行排序似乎同样合理。然后你只需要致电Collections.sort(people, comparator)就可以了。 Stack Overflow上有很多示例可以帮助您按特定属性进行排序。

关键部分是要意识到你所拥有的并不是一张地图 - 这是一张清单。