2014-09-22 4 views
0

나는 모두 동일한 유형이고 두 개의 속성 'uniqueId'와 'secondaryId'를 가진 객체 목록을 가지고 있습니다. 나는 각 UNIQUEID 먼저 'UNIQUEID'로하고 'secondaryId'로이 목록을 정렬 할 때문에이 목록이 :그루비리스트는 두 가지 기준으로 정렬합니다.

을 UniqueID/SecondaryID 5/3 2/6 5/8 2/5

번 모양을 분류 :

return searchResults.sort{[it.uniqueId, it.secondaryId]} 
: 2/5 2/6 5/3 5/8

나는 꽤 괜찮 구문을 얻을 수없는 것

내가 처음부터 시도해 왔지만 작동하지 않았습니다.

+0

http://www.intelligrape.com/blog/2012/08/10/groovier-way-of-sorting-over-multiple-fields- in-a-map-in-groovy/https://gist.github.com/timyates/3314416으로 안내했다. –

답변

5

당신은 second sorting criteria에 대한 the elvis operator를 사용할 수 있습니다

map = [[u:5, s:3], 
[u:2, s:6], 
[u:5, s:8], 
[u:2, s:5]] 

sort = { m -> 
    m.sort { e1, e2 -> 
    e1.u <=> e2.u ?: e1.s <=> e2.s 
    } 
} 

assert sort(map) == [[u:2, s:5], 
[u:2, s:6], 
[u:5, s:3], 
[u:5, s:8]] 
관련 문제