java - 按日期对 HashMap 进行排序

标签 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中排序

最佳答案

I have already converted the above to hashmap.

我建议你不要这样做。我建议你将其转换为List<Person>其中每个 Person有姓名、日期和 ID。 (如果不是 Person,则为其他类。)它作为列表比 map 更有意义,因为这实际上是 JSON 显示的内容:对象列表,每个对象都有名称、日期和 ID。我个人会将日期设为 java.time.Instant或类似的东西,但这是一个单独的问题。

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

关键是要认识到您所拥有的并不是一张 map ,而是一个列表。

关于java - 按日期对 HashMap 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42459176/

相关文章:

Javascript 基数排序

Python 初学者 - 使用 lambda 函数对元组进行排序

java - 像 HashMap 但排序的东西?

java - Freemarker + Java - 如何使用键将值设为 "lookup"

java - 列表内的 HashMap 来处理我的文本文件

java - 在 Java 中创建复杂的 HashMap

java - 如何定义 Java Tomcat 应用程序的正确启动顺序?

c# - 用户定义类列表错误 "Failed to compare two elements in the array"

java - java中的异常: write in a output file

java - 如何使用 Proguard 保留扩展并实现接口(interface)的类