2

キーが複数の値を保持するマップがあります

datamap = [ 'Antenna Software':[ 'Salarpuria', 'Cessna', 'Vrindavan Tech', 'Alpha Center' ],
             'Ellucian':[ 'Malvern', 'Ellucian House', 'Residency Road'] ] 

ここで、値をアルファベット順に並べ替える必要があります

datamap = [ 'Antenna Software':[ 'Alpha Center', 'Cessna', 'Salarpuria', 'Vrindavan Tech' ],
            'Ellucian':[ 'Ellucian House', 'Malvern', 'Residency Road' ] ] 

グルーヴィーな方法でそれを行う方法は?

4

1 に答える 1

8

あなたはできるはずです:

def sortedMap = datamap.sort().collectEntries { k, v ->
  [ k, v.sort( false ) ]
}

マップのキーをソートすることに煩わされない場合は、最初の を取り除くことができますsort():

def sortedMap = datamap.collectEntries { k, v ->
  [ k, v.sort( false ) ]
}

の説明sort( false ):

デフォルトではsort、Groovy のメソッドは元の listを変更するため、次のようになります。

// Given a List
def a = [ 3, 1, 2 ]

// We can sort it
def b = a.sort()

// And the result is sorted
assert b == [ 1, 2, 3 ]

// BUT the original list has changed too!
assert a != [ 3, 1, 2 ] && a == [ 1, 2, 3 ]

したがって、 に渡すfalsesort、元のリストはそのままになり、ソートされたリストが返されます。

// Given a List
def a = [ 3, 1, 2 ]

// We can sort it (passing false)
def b = a.sort( false )

// And the result is sorted
assert b == [ 1, 2, 3 ]

// AND the original list has remained the same
assert a == [ 3, 1, 2 ]
于 2013-10-01T08:54:44.437 に答える