あなたがちょうどそうのようなマップを宣言する場合:あなたはそれが言うdocumentation for LinkedHashMapを見れば次に
def m = [:]
を、あなたは、デフォルトではGroovyの見ることができますがLinkedHashMap
assert m.getClass().name == 'java.util.LinkedHashMap'
になります:
ハッシュテーブルとリンク予測可能な反復順序を使用して、Mapインタフェースの実装をリストします。この実装は、すべてのエントリを実行する二重リンクリストを維持するという点でHashMapとは異なります。このリンクリストは、通常、キーがマップに挿入された順序(挿入順序)である反復順序を定義します。
のでLinkedHashMap
は順序があり、あなたは、キーの自然順序付けをしたい場合は、あなたがJavaのソートされたマップのいずれかを使用することができますsort
def m = [ b:1, a:2 ]
// Sort by descending value
m = m.sort { -it.value }
println m // prints [a:2, b:1]
を呼び出すことによって、Groovyでその順序に影響を与えることができ、そのようあなたはGroovyでこれを使用したいと言って
TreeMap
として、あなたが行うことができます:
// def tm = [ tim_yates:1, F21:2 ] as TreeMap // works as well
TreeMap tm = [ tim_yates:1, F21:2 ]
そして、これを印刷し、あなたはそれがキーによって順序付けされて見ることができます:あなたは、キーを追加すると
println map // prints [F21:b, tim_yates:a]
がTreeMap
は秩序を維持します。 LinkedHashMap
は、新しい値を追加すると自動的にソートされません。