2013-06-14 3 views
0

하나의 클래스에 대해 더 많은 Comparables를 구현할 수 있는지 알고 싶습니다. 정수 필드로 arraylist를 주문하고 내 프로그램의 다른 부분에서 다른 필드로 주문해야합니다. 어떻게 할 수 있습니까? 맞춤형 Comparator에 대해 생각했지만 작동하지 않았습니다.여러 클래스의 비교 가능

public void OrderbyColours(ArrayList<Horses> scuOrderedByColours, 
     ArrayList<Horses> ArrayScud) { 
    scuOrderedByColours.addAll(ArrayScud); 
    Collections.sort(scuOrderedByColours, new Comparator<Horses>() { 
     public int compare(Horses o1, Horses o2) { 
      return o1.Position - o2.Position; 
     } 
    }); 
} 
+0

'사용자 지정 비교기에 대해 생각했지만 작동하지 않았습니다. '왜 안 되니? – SLaks

+0

예상대로 사용자 지정 비교기가 여기에 있습니다. – Zavior

+1

''에 대한 비교기를 생성하는 경우 'compare'의 인수도 'Horses'여야합니다. – Pshemo

답변

1

가정 비교기는 (그들이 작동하지 않을 어떻게에 관해서 궁금있는) 작동하지 않는, 또는 당신은 단순히 하나를 사용하지 않으려면, 당신은의 인스턴스가있는 래퍼 클래스를 작성할 수 원래 클래스를 데이터로 사용합니다.

ex.

public class HorsesWrapper implements Comparable<HorsesWrapper> 
{ 
    private Horses horses; 

    public int compareTo(HorsesWrapper other) 
    { 
    // your sort criteria based on the Horse member. 
    } 
}