按日期排序
问题描述:
一个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中排序
答
我已经将上述内容转换为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有很多例子可以帮助你按特定属性进行排序。
关键是要认识到你得到的不是自然的地图 - 它是一个列表。
根据定义,HashMap没有排序。把你的条目放入列表中,然后对列表进行排序。 –
那么hashmap的关键和价值是什么? –
我很抱歉,如果我听起来很奇怪,但不应该使用散列表类似于字典。我错过了什么? –