JAVA/자료구조

JAVA compareTo 메소드 사용법

수달하나 2021. 8. 18. 15:20

compareTo 함수는 두 가지의 값을 비교할 때 사용하는 함수로 숫자와 문자열 모두를 비교할 수 있다.

 

반환 타입 : int

 

1. 숫자 비교

 

숫자 비교의 경우 기준값 s 비굣값 a, b, c 라고 했을 때 기준값이 크면 1, 같으면 0, 작으면 -1을 반환하게 된다.

Integer s = 10;
Integer a = 8;
Integer b = 10;
Integer c = 12;

int result;

result = s.compareTo(a); // result : 1
result = s.compareTo(a); // result : 0
result = s.compareTo(a); // result : -1

// int 타입을 사용할 경우
int A = 8;
int B = 3;

result = Integer.compare(A,B);

 

2. 문자열 비교

 

문자열 비교 같은 경우는 다양한 값을 내보낼 수 있는데 우선 같은 문자열 일 경우에는 0을 반환하게 된다.

 

문제는 다른 문자열 일 경우인데 비교 기준은 같은 위치에서의 문자이다. 예를 들어서 "abcde" 가 기준 문자열이고 "abfgh"가 비교 문자열 일 때 0번 째 인덱스와 1번 째 인덱스는 동일한 문자를 가지고 있기 때문에 넘어간다.

하지만 3번 째 인덱스에서 기준 문자열은 c 라는 문자이고 비교 문자열은 f 문자이기 때문에 그 둘의 각각의 아스키 코드값 99, 102 의 차이값 99-102 = -3 이 반환되게 된다.

반대로 기준 문자열이 "abfgh" 이고 비교 문자열이 "abcde"일 경우에는 3이 반환되게 된다.

 

String str = "abcde";
String com = "abfgh";

int result;

result = str.compareTo(com); // result : 'c'-'f' = -3
result = com.compareTo(str); // result : 'f'-'c' = 3

 

이런 방식으로 양수가 나왔을 경우에는 기준 문자열이 비교 문자열 보다 사전상 더 앞에 나오는 문자열이고 음수가 나왔을 경우에는 비교 문자열이 기준 문자열 보다 사전상 앞에 위치해 있다는 것을 알 수 있다.