단순 리스트를 정렬할때 보통 Collections.sort()를 사용한다. // 오름차순
ex) ArrayListlist = new ArrayList (); list.add("d"); list.add("c"); list.add("b"); list.add("a"); Collections.sort(list);
출력 : abcd
하지만 개발을 하다보니 VO를 List에 담는 경우도 있는데~
이때 List를 Collections.sort()에 담아서 실행하게 된다면 어떤 기준으로 정렬할지 모르기 때문에 에러가 발생한다.
Listlist = memberService.getUserList(); Collections.sort(list); //에러 발생
이때 단순 정렬이라면 Comparable을 사용해도 되고, 다른 여러가지 조건을 더 주려면 Comparator을 사용하면 된다.
객체 정렬 Comparator : 기본 정렬 기준 외에 다른 여러 기준으로 정렬하고자 할 때 사용하는 클래스
[형태]
Collections.sort(객체, new Comparator<타입>(){
});
선언하고 compare 메소드를 구현하면 된다.
ex) Collections.sort(list, (o1, o2) → { if (o1.getNumber() > o2.getNumber()) return 1; else if (o1.getNumber() < o2.getNumber()) return -1; else {return 0;} });
참고 :
https://cchoimin.tistory.com/entry/%EA%B0%9D%EC%B2%B4-%EC%A0%95%EB%A0%AC-Comparator?category=827467