2016-12-05 1 views
1

에서 나는 개체의 목록을 가지고 있고 나는 그룹으로는 그루비

list.groupBy{ it[1] } 

을 시도

{"Model":["GX 470"],"Make":["Lexus","Jeep"],"Color":["Red", "blue"]} 

로 변환하고자하지만 나에게

을 반환
{"Model":[["GX 470","Model"]],"Make":[["Lexus","Make"],["Jeep","Make"]],"Color":[["Red","Color"],["blue","Color"]]} 

답변

2

당신은 당신의 중간 결과를 가지고 한 단계 더 나아가 변환 수 :

list.groupBy{ it[1] }.collectEntries{ k, v -> [(k):v*.get(0)] } 
3

groupBy은 원래 개체에서 그룹화 한 요소를 제거하지 않으므로 키로 그룹화 된 모든 원래 데이터를 얻을 수 있기 때문입니다.

좀 더 사용자 정의 그룹에 대한 inject (및 withDefault)를 사용할 수 있습니다 :

list.inject([:].withDefault{[]}) { map, elem -> 
    map[elem[1]] << elem[0] 
    map 
}