2013-10-28 26 views
5

Bir listeyi bir listeden doldurmaya çalışıyorum. İşte yaptığım şey.Bir HashMap'i groovy içinde doldurmak için toplama yöntemini kullanma

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

Bunu yaptığımda, bookMap ArrayList türüne dönüşür ve şimdi bir HashMap listesi vardır.

bookMap[{1=2}, {2=3}, {3=4}, {4=5}], yani bir Haritalar Listesi.

ArrayList'ten collect yöntemini kullanarak bir HashMap nasıl edinebilirim? collect yerine each kullanarak bunu çözmek kolay olurdu, ancak sadece collect kullanarak çözülüp çözülmeyeceğini merak ediyorum.

cevap

11

Şanslısınız! collectEntries yönteminin işleyişi yalnızca collect gibi çalışır; ancak bir Harita için!

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

Harika !, bu tam olarak istediğim şey! – Wizard