다음과 같은 메서드를 사용할 수 있으므로 모든 개체 목록을 전달할 수 있으며 원하는 순서로 정렬 된 목록을 반환합니다.개체 목록 정렬
공개 목록 정렬 (목록 listToBeSorted, 문자열 순서, 문자열 속성) { } 그래서 위의 방법과 같이 호출하면
class Person{
private String name;
private Date dob;
private int age;
}
: 그것은을 정렬합니다
sort(myList, "ascending", "name");
person 객체의 "name"속성의 오름차순으로 나열하십시오.
다음과 같이 Comparator를 사용해 보았지만 실제로 원하는 곳에 가까이 갈 수 없었습니다.
이List<Person> myList = new ArrayList<Person>();
Collections.sort(myList, PersonComparator.NAME_COMPARATOR);
편집 :
내가 준 예는 잘 작동 다음과 같이
public class PersonComparator {
public static final Comparator<Person> NAME_COMPARATOR = new Comparator<Person>() {
@Override
public int compare(Person object1, Person object2) {
return object1.getName().compareToIgnoreCase(object2.getName());
}
};
public static final Comparator<Person> DOB_COMPARATOR = new Comparator<Person>() {
@Override
public int compare(Person object1, Person object2) {
return object1.getDob().compareTo(object2.getDob());
}
};
public static final Comparator<Person> AGE_COMPARATOR = new Comparator<Person>() {
@Override
public int compare(Person object1, Person object2) {
return object1.getAge().compareTo(object2.getAge());
}
};
}
그리고는 비교기를 사용했다. 하지만 Person 클래스에서만 작동합니다. 어떤 개체 목록에 대해서도 사용할 수있는 메서드가 필요했고 개체의 속성뿐만 아니라 원하는 순서를 지정할 수있었습니다.
'Comparator' 구현에 잘못된 것이 있어야합니다. 'Comparator' 구현 안에서 좀 더 복잡한 규칙을 수행 할 수 있습니다. –
그 결과는 무엇입니까? – arynaq
음, 작동해야합니다 ... 예제 데이터를 제공 할 수 있습니까? – fge