공상하는 개발자

[JAVA] Comparable, Comparator 정복하기 본문

개발/자바

[JAVA] Comparable, Comparator 정복하기

공상과학소설 2020. 7. 31. 20:27
반응형

자바에서는 정렬을 sort() 메서드로 할 수 있다.

하지만 이 메소드는 기본적인 정렬만 가능하고,

좀 더 자세한 조건을 건 정렬을 하고 싶을 때,

Comparable과 Comparator을 사용한다.

두 개를 사용하면서 무엇이 차이가 있는지 몰랐는데

이번 기회를 통해 이 두 개를 정복하도록 하자.


Interface Comparable

  •  정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메서드를 정의하는 인터페이스
  • Java에서 기본적으로 제공되는 Integer나 String 같은 클래스들도 모두 Comparable 인터페이스를 구현하고 있다. (Integer : 오름차순, String : 사전 순 정렬)

구현 방법

  1. 정렬하고 싶은 객체에 Comparable를 implements 시키고, compareTo() 메서드를 오버라이드 해서 정렬하고 싶은 조건을 작성해준다.

구현 코드 

class Square implements Comparable<Square>{
		int height,width;

		@Override
		public int compareTo(Square o) {
			if(this.width>o.width) {
				return 1;	// width에 대해서 오름차순이다.
			}else {
				return -1;	
			}
		}
		
	}

Interface Comparator

  • 정렬 가능한 클래스들의 기본 정렬기준과 다르게 정렬하고 싶을 때 사용하는 인터페이스.
  • 기본 정렬기준인 오름차순 정렬을 내림차순 정렬로 바꿀 때 많이 사용된다.

구현 방법

  1. 정렬하고 싶은 객체에 Comparator 를 implements 해주고 compare() 메서드를 오버라이드 한다.

구현 코드

class Square implements Comparator<Square> {
		int height, width;

		@Override
		public int compare(Square o1, Square o2) {
			return Integer.compare(o2.width, o1.width); // width 내림차순 정렬
		}

	}

두 가지의 정렬 인터페이스에 대해서 공부할 수 있는 기회를 가졌다.

확실한 이해를 하고 넘어가도록 하자.

반응형
Comments