Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Linux
- 개발자 코딩테스트
- 직장인점심구독
- 개발자 채용연계형인턴
- 셰프의찾아가는구내식당
- 도커
- docker image
- 프로그래머스
- 식단일기
- 개발자 면접 질문
- 신입 개발자 필수 면접 질문
- 프로그래머스 코딩테스트
- 신입 개발자 자바 면접 질문
- 개발자 면접
- Plating
- 식단
- 코딩테스트 연습
- 샐러드
- 자바 암호화
- docker
- 자바 암호화 복호화
- 플레이팅
- 개발자 인턴
- 자바 암호화 알고리즘
- 개발자 정규직
- .dockerignore
- 신입 개발자 자바 면접
- 신입 개발자 면접
- 신입 개발자 면접 질문
- 자바 stream
Archives
- Today
- Total
달리는 두딘
[JAVA] compareTo(), 객체 크기 비교 본문
1. compareTo() 함수
A.compareTo(B)는 문자열, 숫자 등 두개의 객체 A와 B의 크기를 비교하는 함수입니다.
A.compareTo(B)의 결과 값으로 결과 값으로 0, 양수, 음수가 리턴될 수 있으며, 아래와 같은 의미를 갖고 있습니다.
- 0 : A와 B가 같다
- 음수 : A가 B보다 작다
- 양수 : A가 B보다 크다
2. 두개의 문자열 비교
아래와 같이 compareTo()를 이용하여 문자열의 크기를 비교할 수 있습니다. 알파벳의 사전적인 순서로 크기를 비교합니다.
public class Example {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Hello";
String str3 = "World";
String str4 = "Java";
System.out.println("str1.compareTo(str2) ? " + str1.compareTo(str2));
System.out.println("str1.compareTo(str3) ? " + str1.compareTo(str3));
System.out.println("str3.compareTo(str4) ? " + str3.compareTo(str4));
}
}
결과를 보면, 문자열의 경우 알파벳의 사전적 순서가 뒤에 있을 때 더 큰 값을 갖습니다. 또한, 대문자가 소문자보다 작은 값을 갖습니다.
- str1과 str2가 같기 때문에 0이 리턴
- str1과 str3 중에 str1가 더 작기 때문에 음수가 리턴
- str3과 str4 중에 str1가 더 크기 때문에 양수 리턴
str1.compareTo(str2) ? 0
str1.compareTo(str3) ? -15
str3.compareTo(str4) ? 13
대소문자를 무시하고, 알파벳의 순서만으로 크기를 비교할 때는 compareTo() 대신에 compareToIgnoreCase()를 사용하시면 됩니다.
3. 두개의 숫자 비교
Integer, Double 등 숫자 객체도 compareTo() 함수가 있으며, 이 함수로 두개의 숫자를 비교할 수 있습니다.
public class Example {
public static void main(String[] args) {
Integer n1 = 5;
Integer n2 = 10;
Integer n3 = 5;
Integer n4 = 0;
System.out.println("n1.compareTo(n2) ? " + n1.compareTo(n2));
System.out.println("n1.compareTo(n3) ? " + n1.compareTo(n3));
System.out.println("n3.compareTo(n4) ? " + n3.compareTo(n4));
}
}
결과를 보면,
- n1과 n2 중에 n1이 작기 때문에 음수 리턴
- n1과 n3가 같기 때문에 0 리턴
- n3과 n4 중에 n3가 크기 때문에 양수 리턴
n1.compareTo(n2) ? -1
n1.compareTo(n3) ? 0
n3.compareTo(n4) ? 1
4. Custom 클래스 객체 비교
자신이 직접 추가한 클래스도 compareTo() 함수를 이용하여 크기를 비교할 수 있습니다.
아래와 같은 순서로 구현을 해야 합니다.
- Custom 클래스에 Comparable 인터페이스 구현
- compareTo() 메소드 구현
compareTo() 메소드를 구현할 때는 두개의 객체의 크기에 따라 0, 음수, 양수가 리턴되도록 해야 합니다. 아래 예제에서는 단순하게 String의 compareTo()의 결과 값을 리턴하도록 했습니다.
```java
public class Example {
public static class Text implements Comparable<Text> {
private String mText;
public Text(String text) {
mText = text;
}
public String getText() {
return mText;
}
@Override
public int compareTo(Text right) {
return mText.compareTo(right.getText());
}
}
public static void main(String[] args) {
Text text1 = new Text("aaa");
Text text2 = new Text("aaa");
System.out.println(text1.compareTo(text2));
}
}
Output:
0
출처
'지식노트' 카테고리의 다른 글
[JAVA] Entity, DTO 개념과 차이점 (+VO) (2) | 2023.02.09 |
---|---|
[Spring] Consumes와 Produces의 차이 (0) | 2023.02.09 |
[ETC] MQ(Message Queue)란? (6) | 2023.02.06 |
[Vue.js] Vuex에서 Store 사용하기 (12) | 2022.12.16 |
[DB] 파티셔닝 개념 및 사용법 (8) | 2022.12.13 |