java - 根据多个键对 map 列表进行排序

标签 java arraylist groovy mule dataweave

我有一个ListMap看起来像这样:

[{type=UNL,date=20170606,publication=ECC,boNumber=34,value=500}
{type=UNP,date=20190807,publication=ECD,boNumber=24,value=100}
{type=UNA,date=20170606,publication=ECC,boNumber=34,value=400}
{type=UNC,date=20170606,publication=ECC,boNumber=34,value=300}
{type=UNF,date=20190807,publication=ECD,boNumber=24,value=200}]

对我来说最重要的字段是 date,publication,boNumber 的值例如20170606 ECC 34 。我想对此进行排序 List将这三个字段结合在一起。

预期结果

[{type=UNL,date=20170606,publication=ECC,boNumber=34,value=500}
{type=UNA,date=20170606,publication=ECC,boNumber=34,value=400}
{type=UNC,date=20170606,publication=ECC,boNumber=34,value=300}
{type=UNP,date=20190807,publication=ECD,boNumber=24,value=100}
{type=UNF,date=20190807,publication=ECD,boNumber=24,value=200}]

如何使用 groovy、dataweave 或 Java 在 mule 中实现这一点。

最佳答案

你要找的是.sort { [it.date, it.publication, it.boNumber] }

def listOfMaps = [[type:'UNL',date:20170606,publication:'ECC',boNumber:34,value:500],
[type:'UNP',date:20190807,publication:'ECD',boNumber:24,value:100],
[type:'UNA',date:20170606,publication:'ECC',boNumber:34,value:400],
[type:'UNC',date:20170606,publication:'ECC',boNumber:34,value:300],
[type:'UNF',date:20190807,publication:'ECD',boNumber:24,value:200]]

listOfMaps
    .each { println it }
println()
listOfMaps
    .sort { [it.date, it.publication, it.boNumber] }
    .each { println it }

例如输出

[type:UNL, date:20170606, publication:ECC, boNumber:34, value:500]
[type:UNP, date:20190807, publication:ECD, boNumber:24, value:100]
[type:UNA, date:20170606, publication:ECC, boNumber:34, value:400]
[type:UNC, date:20170606, publication:ECC, boNumber:34, value:300]
[type:UNF, date:20190807, publication:ECD, boNumber:24, value:200]

[type:UNL, date:20170606, publication:ECC, boNumber:34, value:500]
[type:UNA, date:20170606, publication:ECC, boNumber:34, value:400]
[type:UNC, date:20170606, publication:ECC, boNumber:34, value:300]
[type:UNP, date:20190807, publication:ECD, boNumber:24, value:100]
[type:UNF, date:20190807, publication:ECD, boNumber:24, value:200]

关于java - 根据多个键对 map 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429704/

相关文章:

grails - 执行程序或withPool构造

tomcat - 当我通过 g :form, 提交大量参数时,params 对象中缺少一些参数

java - 打印 List/String 类型的 Arraylist 的所有元素

java - 在将图像上传到 Firebase 存储之前压缩图像

java - Spring集成Splitter任务执行

java - android - 删除字符串和arrayList中的字符无法正常工作

java - 泛型 <? super A> 不允许将 A 的父类(super class)型添加到列表中

java - 如何使用maven添加jms队列?

java - 显示 ArrayList 中对象的值(来自子类)(基于父类(super class))

grails - 如何在grasp gsp中使用g:datePicker来选择时间?