2013-10-28 3 views
5

Я пытаюсь заполнить карту из списка. Вот что я делаю.Использование метода закрытия крышки для заполнения HashMap в groovy

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

Когда я это делаю, BookMap изменяет тип ArrayList и теперь имеет список HashMap.

bookMap сейчас [{1=2}, {2=3}, {3=4}, {4=5}], т. Е. Список карт.

Как я могу получить HashMap из ArrayList с использованием метода collect? Было бы легко решить это, используя each вместо collect, но мне просто интересно, можно ли его решить с помощью collect.

ответ

11

Вам повезло! Обработчик collectEntries работает так же, как collect, но и для карты!

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

Удивительный !, это именно то, что я хотел! – Wizard

 Смежные вопросы

  • Нет связанных вопросов^_^