java - 基于java 8中的优先级对地图值进行排序
问题描述
{
"response": [
{
"messages": [
{
"parameters": {
"PRECEDENCE": "3",
"ENTITY_CLASS": "ACCOUNT"
}
},
{
"parameters": {
"PRECEDENCE": "16",
"ENTITY_CLASS": "PRODUCT"
}
},
{
"parameters": {
"PRECEDENCE": "1",
"ENTITY_CLASS": "ACCOUNT"
}
}
]
}
]
}
我希望输出应该按升序排序
{
"response": [
{
"messages": [
{
"parameters": {
"PRECEDENCE": "1",
"ENTITY_CLASS": "ACCOUNT"
}
},
{
"parameters": {
"PRECEDENCE": "3",
"ENTITY_CLASS": "PRODUCT"
}
},
{
"parameters": {
"PRECEDENCE": "16",
"ENTITY_CLASS": "ACCOUNT"
}
}
]
}
]
}
我目前的结构
Response
Set<essage> message
Map<String, String> parameters = new HashMap<>();
我正在尝试通过手动比较。有没有一种方法可以迭代和排序地图值。
如何有效优化?
解决方案
首先,如果订单对您很重要,我必须将消息类型从 aSet
更改为。List
接下来,您必须Comparator
为您Message
实现简化排序方式,该compare
方法可能如下所示:
public int compareTo(Message msg1, Message msg2){
return msg1.parameters.get("PRECEDENCE")
.compareTo(msg2.parameters.get("PRECEDENCE"))
}
不要忘记添加不同的空检查。
然后,您可以简单地调用response.messages.sort(new YourMessageComparator())
以按优先级排序消息。
推荐阅读
- c# - 有问题字符的列名
- ssl - 如何使用客户端证书从 Kong 无服务器功能建立 SSL 连接
- python - “args”和“kwargs”哪一个在touple、list和dictionary中使用?
- android - 如何将自定义 AlertDialog 条目添加到 RecyclerView?
- java - java - 在将记录插入表之前如何处理java中的非空字段
- c# - 使用 StreamReader 读取文件时读取固定数量的字节
- wordpress - 可湿性粉剂 | 计算字段表单中的双端队列样式
- java - DAO 模式和服务层的模型对象
- javascript - Regular expression of decimal range 0.025 to 99.999
- azure - QnA Maker - 运行时错误:授权失败