2013-10-28 10 views
5

Sto tentando di compilare una mappa da un elenco. Ecco cosa sto facendo.Utilizzo del metodo di chiusura di raccolta per popolare una HashMap in groove

itemNoList = [1,2,3,4] 
bookMap = [:] 
bookMap = itemNoList.collect{ [ (it) : it+1 ] } 

Quando si esegue questa operazione, bookmap si modifica in tipo ArrayList e ora ha un Elenco di HashMap.

bookMap è ora [{1=2}, {2=3}, {3=4}, {4=5}], cioè un elenco di mappe.

Come potrei ottenere una HashMap da ArrayList usando il metodo collect? Sarebbe facile risolverlo utilizzando each invece collect, ma sono curioso di sapere se è possibile risolverlo utilizzando collect.

risposta

11

Sei fortunato! L'handle del metodo collectEntries funziona esattamente come collect ma per una mappa!

groovy:000> itemNoList = [1, 2, 3, 4] 
===> [1, 2, 3, 4] 
groovy:000> itemNoList.collectEntries { [(it): it+1] } 
===> {1=2, 2=3, 3=4, 4=5} 
+0

Impressionante !, questo è esattamente quello che volevo! – Wizard