본문 바로가기

🤓 공부

Java : Comparator

Comparator 활용을 통해 커스텀 정렬을 하는 것은 유용하다.
단, 기본형은 커스텀 정렬이 불가능하다. 물론, 아예 불가능한 것은 아닌 것이.. List 등으로 데이터를 넘긴 뒤 List.sort(...);는 가능하다.
코딩테스트에서 유용하게 사용할 수 있는 Comparator을 ide 없이 사용할 수 있도록 연습을 해보려고 한다..!



  
1. Arrays.sort()로 커스텀 정렬을 하는 경우
  임의의 배열 (기본형 X) 혹은 다차원 배열 등을 정렬하는 경우 쓸 수 있다.

People[] people=new People[100]; // People이라는 임의의 class가 존재한다고 가정
people=...;
Arrays.sort(people, new Comparator<People>() {
    @Override
    public int compare(People p1, People p2) {
      	return p1.age - p2.age;
    }
});

String[] str;
Arrays.sort(str, new Comparator<String>() {
	@Override
    public int compare(String s1, String s2) {
    	return s1.compareTo(s2);
    }
});

 

String 배열은 기본형이 아니지만 너무 자주 사용해서 기본형이라고 착각하게 되는 Magic ..

꼭 잊지말자 ^___^

참고로 Comparator<String>의 경우, compareTo()를 이용하여 사전순 정렬을 할 수 있는데,

return s1.length() - s2.length(); 같은 경우도 가능하다.

정말이지 커스텀 정렬에는 너무나도 유용한 Comparator이다!! 🥹



2. List.sort()로 커스텀 정렬을 하는 경우
  List를 정렬할 수 있다.

people.sort(new Comparator<Integer>(){ // List<Integer>형의 people이 존재한다고 가정
    @Override
    public int compare(Integer i1, Integer i2) {
      	return i2 - i1;
    }
});