2017-02-25 188 views
1

一个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中排序

+2

根据定义,HashMap没有排序。把你的条目放入列表中,然后对列表进行排序。 –

+2

那么hashmap的关键和价值是什么? –

+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有很多例子可以帮助你按特定属性进行排序。

关键是要认识到你得到的不是自然的地图 - 它是一个列表。