如果您只是这样声明地图:
def m = [:]
然后,您可以看到Groovy默认情况下
linkedHashMap
assert m.getClass().name == 'java.util.linkedHashMap'
如果您查看linkedHashMap的文档,它将显示:
Map接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashMap的不同之处在于,它维护一个贯穿其所有条目的双向链接列表。此链表定义了迭代顺序,通常是将键插入映射的顺序(插入顺序)。
所以,
linkedHashMap有一个顺序,你可以通过调用影响Groovy中的顺序
sort
def m = [ b:1, a:2 ]// Sort by descending valuem = m.sort { -it.value }println m // prints [a:2, b:1]如果您想对键进行自然排序,则可以使用Java的排序映射之一,例如
TreeMap
要说您想在Groovy中使用它,可以执行以下操作:
// def tm = [ tim_yates:1, F21:2 ] as TreeMap // works as wellTreeMap tm = [ tim_yates:1, F21:2 ]
然后打印它,您可以看到它是按以下键排序的:
println map // prints [F21:b, tim_yates:a]
TreeMap添加键时,A 将保持顺序。
linkedHashMap添加新值时,A 不会自动保持排序。



