2013-12-20 5 views
0

제 3자가 제공하는 공용 API를 사용하고 있으며 final로 정의 된 객체 컬렉션이 있습니다.구현 클래스가 final 인 Java에서 객체 컬렉션 정렬

개체에는 개체의 String 이름을 검색 할 수있는 getName() 메서드가 있습니다.

내가해야 할 일은 이름으로 개체를 정렬하는 것이며 처음에 시도한 작업은 원래 클래스를 확장하여 Comparable을 구현하는 것이 었습니다. 그러나 그것이 그것이 최종적이었고 그러므로 가능하지 않다는 것을 알았을 때입니다.

여기에 용어에 대한 사과 ... Java에 익숙하지 만 여전히 나의 길을 찾고 있습니다. 대체 방법을 제공해 주실 수 있습니까?

감사합니다,

+5

'비교 자'를 사용하십시오. –

+1

http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html. –

답변

2

당신은 클래스를 확장하지 않고 자신의 Comparator을 구현하고 Collections.sort에 대한 매개 변수로 사용할 수 있습니다 :

public class MyComparator implements Comparator<MyClass> { 
    @Override 
    int compate (MyClass a, MyClass b) { 
     // null handling removed for clarity's sake 
     // add it if you need it 
     return a.getName().compareTo(b.getName()); 
    } 
} 

그리고 지금은 그냥 사용

List<MyClass> myList = ...; 
Collections.sort (myList, new MyComparator()); 
+0

고마워요. - 기본 컬렉션이 정렬 된 목록이 아니며 정렬 할 수 없다는 것을 이해하면이 기능이 작동합니다. – user3123546

1

을 당신은 자신의 비교자를 구현하고 컬렉션에 Collections.sort를 사용해야 할 것이다. 이런 식으로 뭔가 :

class CustomComparator implements Comparator<YourObject> { 

    @Override 
    public int compare(YourObject o1, YourObject o2) { 
     return o1.getName().compareTo(o2.getName()); 
    } 
} 

그런 다음

Collections.sort(yourCollection,new CustomComparator()); 

로 비교기를 사용하여 그것이 도움이되기를 바랍니다.