2013-10-28 3 views
5

List에서 Map을 채우려고합니다. 여기 내가하는 일이있다.그루비에서 HashMap을 채우기 위해 클로저 클로저 메서드 사용

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

이렇게하면 bookMap이 ArrayList 유형으로 변경되고 List of HashMap이 생깁니다.

bookMap은 이제 [{1=2}, {2=3}, {3=4}, {4=5}], 즉지도 목록입니다.

collect 메서드를 사용하여 ArrayList에서 HashMap을 어떻게 얻을 수 있습니까? collect 대신 each을 사용하여 쉽게 해결할 수 있지만 collect을 사용하여 해결할 수 있는지 궁금합니다.

답변

11

운이 좋다! collectEntries 메서드 핸들은 collect처럼 작동하지만 Map!

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