기타/What I Learned

[TIL] 자료구조 - Comparable 인터페이스

가죽방패 2022. 3. 8. 13:24

※ Override

String one = "hello world!";
String two = "hello world1";
//문자열 비교
if(one.equals(two))
	System.out.println("they are the same");

one 의 hello world와 two의 hello world를 비교하는 자바 코드로 두 문자열을 비교하기 때문에 equals 메소드는 두 변수가 같다고 판단할 것이다.

 

Object one = "hello world!";
Object two = "hello world1";
//문자열 비교
if(one.equals(two))
	System.out.println("they are the same");

하지만 이번엔 equals 메소드가 두 개의 메모리 주소를 비교하게 되어 두 객체가 일치하지 않다는 결과가 나온다.

이와같이, 객체 클래스의 equals는 메모리 주소를 비교하지만, 문자열 클래스의 equals를 오버라이드하면 메모리 주소 대신 문자열을 비교하게 만들 수 있다.

 

※ Comparable 인터페이스

- 객체에서 원하는 자료형으로 비교하고자 Comparable 인터페이스를 활용하고 이는 같은 자료형의 다른 객체 하나를 인자로 받아와 비교하는 compareTo 함수를 이용한다. a.compareTo(b)는 a가 b보다 작을 때 0보다 작은수 a와 b가 같으면 0, a가 b보다 크면 0보다 큰수를 반환한다.