|
W języku Groovy istnieje doskonale opracowany interfejs dla dynamicznych list i map. Sortowanie mapy po kluczu nie nastręcza żadnych problemów. Istnieje klasa TreeMap(), która z natury sortuje mapy:
def map = ["c":3, "b":2, "a":1]
def tm = new TreeMap(map)
assert tm == ["a":1, "b":2, "c":3]
ot i wszystko.
Nieco więcej problemów jest z posortowaniem mapy po wartości.
Dla listy istnieje metoda sort():
def list = [3, 2, 1]
assert [1, 2, 3] == list.sort()
Niestety dla mapy wywołanie metody sort w tej postaci nie jest możliwe. Można jednak zastosować drobny trick:
//sort by map values def map = [a:3, b:2, c:1] map = map.sort {it.value} assert map == [c:1, b:2, a:3] //sort by map values in reverse map = [a:1, b:2, c:3] map = map.sort {a, b -> b.value <=> a.value} assert map == [c:3, b:2, a:1]
Proste, krótkie i skuteczne. |