Вы можете иметь дело с ArrayList карт, как с любым другим ArrayList. Следовательно, вызов Collections.sort(List) позаботится о вашей проблеме, сортируя ее, используя естественный порядок hashMaps - вероятно, это будет использовать идентификатор. Если вы хотите предоставить Компаратор, чтобы предоставить более подходящую логику тому, что вы имеете в виду, вы можете использовать Collections.sort(List, Comparator).
В groovy вы можете напрямую позвонить .sort()
по заданному массиву, это возможно, так как DefaultGroovyMethods содержит несколько вспомогательных методов, среди которых несколько методов сортировки.
На ваш код:
def map1 = [key1:"1",key2:"2",key3:"3"]
def map2 = [key1:"2",key2:"3",key3:"1"]
def map3 = [key1:"3",key2:"1",key3:"2"]
def maps = [map1,map2,map3 ]
maps.sort();
maps.sort({m1, m2 -> m1.key3 <=> m2.key3})
println maps
Выход:
[[key1:2, key2:3, key3:1], [key1:3, key2:1, key3:2], [key1:1, key2:2, key3:3]]
Этот ответ основаны на возможностях заводной 2.4.4.
Почему бы вам не использовать простые http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort(java.util.List,%20java .util.Comparator)? – Vartlok
Можете ли вы помочь мне, как «компаратор» будет в моем случае? – Mich
Вы должны поместить список 'maps' после определения содержащихся в нем карт. Пример не будет компилироваться как есть. –