2012-05-19 4 views
2

필자는 비교할 수없는 개체 목록을 가지고 있습니다. 그러나 나는 여전히 색인 위치 배열을 기반으로 객체 목록을 정렬하고 싶습니다. 이 목록을 정렬하는 가장 빠르고 효율적인 방법은 무엇입니까? 다음은 그 예이다 :비교할 수없는 개체 정렬

[YELLOW, GREEN, RED, BLUE, GREEN] 

내 특정 요구 사항은 자바 솔루션을하지만 나뿐만 아니라 다른 언어에서 솔루션을 알고 관심을 가질만한 :

List<Colour> list = new ArrayList<Colour>(); 
list.add(Colour.BLUE); 
list.add(Colour.GREEN); 
list.add(Colour.RED); 
list.add(Colour.YELLOW); 
list.add(Colour.GREEN); 

int[] order = new int[] {3, 1, 2, 0, 4}; 

최종 목록은 같아야합니다.

+0

java.util.Comparator 당신은 대신 비교기 아무 소용이 – bestsss

+1

솔루션입니다. 원하는 순서에 따라 두 명령을 모두 요구한다면 RED와 GREEN 사이에서 먼저 어느 것이 먼저 이루어져야 하는지를 어떻게 정의 할 수 있습니까? 질문을 자세히 읽으십시오. – Ketan

+0

를 나열지도를 사용한다 –

답변

5

인덱스에서 직접 목록을 만들면 어떨까요? "정렬"은 필요하지 않습니다.

List<Colour> sortedList = new ArrayList<Colour>(); 
for (int index : order) { 
    sortedList.add(list.get(index)); 
} 

또는 C# :

var sorted = order.Select(index => list[index]).ToList(); 
+0

나는 "X를하는 최선의 방법은 그것을하지 않는 것"이라는 답변을 좋아합니다. – paxdiablo

관련 문제