반응형
비교기를 사용하여 ArrayLists를 정렬하는 것에 대해 읽었으나 일부 연구에 따르면 comparteto
를 사용하는 사람들은 문자열의 방법입니다.
사용자 정의 개체의 ArrayList를 속성 중 하나로 정렬하고 싶었습니다. 날짜 개체
( getStartday ()
).일반적으로 item1.getstartDate ()를 비교합니다. 이전 (item2.getstartdate ())
그래서 내가 쓸 수 있는지 궁금해하고있었습니다.
public class CustomComparator {
public boolean compare(Object object1, Object object2) {
return object1.getStartDate().before(object2.getStartDate());
}
}
public class RandomName {
...
Collections.sort(Database.arrayList, new CustomComparator);
...
}
해결 방법
public class CustomComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
}
비교 ()
메소드는 int
를 반환해야하므로 어쨌든 계획중인 것처럼 boolean
를 직접 리턴 할 수 없어야합니다.
당신의 정렬 코드는 당신이 쓴 것처럼 바로있을 것입니다 :
Collections.sort(Database.arrayList, new CustomComparator());
비교기를 재사용 할 필요가 없으면이 모든 것을 작성하는 것이 약간 짧은 방법이 익명의 클래스로 작성하는 것입니다.
Collections.sort(Database.arrayList, new Comparator<MyObject>() {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.getStartDate().compareTo(o2.getStartDate());
}
});
Collections.sort(Database.arrayList,
(o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
Database.arrayList.sort((o1, o2) -> o1.getStartDate().compareTo(o2.getStartDate()));
Database.arrayList.sort(Comparator.comparing(MyObject::getStartDate));
이들 모두는 동일한 형태입니다.
참조 페이지 https://stackoverflow.com/questions/2784514
반응형
'자바' 카테고리의 다른 글
하나의 활동에서 다른 활동에서 다른 활동으로 객체를 전달하는 방법 (0) | 2021.04.16 |
---|---|
문자열에서 char의 발생 횟수를 계산하려면 어떻게합니까? (0) | 2021.04.16 |
소수점 2 자리의 두 곳을 둥글게하십시오 (0) | 2021.04.16 |
새 요소를 배열에 추가하는 방법은 무엇입니까? (0) | 2021.04.16 |
Java에서 다른 생성자를 어떻게 호출합니까? (0) | 2021.04.14 |
댓글