2012-06-10 14 views
6

mam 3 poziom zagnieżdżone listy w Groovy jak tenuzyskiwanie wartości z zagnieżdżonych list w Groovy

rList = [[[12, name1],[22,name2],[49,name3]],[[33, name5],[22,name6],[21, name7]]] 

jak mogę iteracyjne to w celu uzyskania wartości nazwę od 1 podmenu więc chcę jak rsublist = [name1, name2, name3]

Z góry dziękuję.

Odpowiedz

7
rList = [[[12, 'name1'], [22, 'name2'], [49, 'name3']], [[33, 'name5'], [22, 'name6'], [21, 'name7']]] 
names = rList[0]*.getAt(1) 
assert names == ['name1', 'name2', 'name3'] 

Najpierw rList[0] daje pierwsze podmenu, które jest [[12, name1], [22, name2], [49, name3]]. Następnie, spread operator, *., stosuje się do zastosowania tej samej metody, getAt(1), do każdego elementu tej listy, która zwróci listę z każdym drugim elementem z podlist, które są wartościami, których szukałeś :)

Można również użyć numeru rList[0].collect { it[1] }, który jest równoważny i może być bardziej znany, jeśli nie jesteś przyzwyczajony do operatora rozprzestrzeniania.

+0

Dzięki! działa idealnie –

2

podstawie @epidemian's answer, tutaj jest bardziej czytelna wersja:

rList.first()*.last() 
+0

+1 = D. Off-topic: podświetlanie składni w StackOverflow jest naprawdę dziwne. Dlaczego wywołanie metody "last" ma inny kolor niż "pierwszy"? Wydaje mi się, że rozpoznaje tylko kilka "ogólnych" słów kluczowych i formuł składni (jak komentarze i ciągi literowe, które są dość podobne między różnymi językami). Chciałbym, żeby było coś potężniejszego, może jak rozpoznawanie języka i zakreślacz składni GitHub. – epidemian

Powiązane problemy