我有一个List
的Map
看起来像这样:
[{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/