일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코드스테이츠 합격
- 코드스테이츠 부트캠프
- Gamsgo
- 코드 스테이츠 백엔드 교육과정
- Spring
- 백내장 다초점렌즈 삽입술
- Code States 백엔드 합격 후기
- CodeState 후기
- 해시
- 금융감독원 민원신청
- 자바
- 백준 알고리즘
- 코드스테이츠 합격 후기
- 메서드
- codestates 국비지원 1기 합격 후기
- Java
- 코드스테이츠 백엔드 교육과정
- 코드스테이츠 부트캠프 합격 후기
- 백내장 금감원
- 겜스고
- 백내장
- 보험금 지급거절
- 금감원 백내장 민원
- HLB
- 에이치엘비
- 코테 합격후기
- 금융감독원
- 금감원
- 코드스테이츠 백엔드 후기
- 코드스테이츠 백엔드 부트캠프 합격
Archives
- Today
- Total
개발하는 동그리
[Java]컬렉션 프레임워크 Comparator & Comparable 본문
반응형
Comparator & Comparable
두 가지 모두 컬렉션을 정렬하기 위해 자바에서 제공하는 인터페이스다.
- Comparator : 비교대상(매개변수)와 자기 자신을 비교한다.
- Comparable : 매개 변수인 두 객체를 비교한다.
Comparable 인터페이스
compareTo() 메서드를 사용해 객체를 정렬한다.
Integer 와 String, File, Data와 같은 클래스에서는 자체적으로 Comparable 인터페이스를 구현하여 인스턴스 간 크기를 비교하고 있다. !? 무슨말이야!!!!!!!!!!!!!!!!!!!!!!!
compareTo()에서 비교하는 두 객체가 같으면 0, 비교할 객체가 주어진 객체보다 작으면 음수, 크면 양수를 반환한다.
import java.util.*;
class Employee implements Comparable<Employee>{
int id;
String name,department;
public Employee(int id, String name, String department) {
this.id = id;
this.name = name;
this.department = department;
}
@Override //오버라이딩을 강제하기 위한 애너테이션입니다.
public int compareTo(Employee employee) {
if(id > employee.id) {
return 1;
} else if(id < employee.id){
return -1;
} else {
return 0;
}
}
}
public class ComparableExample {
public static void main(String[] args) {
Set<Employee> person = new TreeSet<>();
Employee employee1 = new Employee(5,"Kim","banana");
Employee employee2 = new Employee(8,"Hwang","apple");
Employee employee3 = new Employee(15,"Park","melon");
person.add(employee1);
person.add(employee2);
person.add(employee3);
for(Employee employee:person){
System.out.println(employee.id+" "+employee.name+" "+employee.department+" ");
}
}
}
넣은 순서와 관계 없이 compareTo() 메서드가 정의해준 대로 정렬되어 출력된다.
Compare() 메서드
기본 정렬 기준이 아닌 다른 정렬 기준으로 사용하고 싶을 때에 메서드를 재정의(오버라이딩) 한다.
정렬할 때에는 반드시 매개변수로 정렬 기준을 제공하거나, 대상 객체에 자체적으로 정렬 기분이 구현되어 있어야 한다.
반응형
'IT 정보 > Java' 카테고리의 다른 글
[Java] 내부 클래스(Inner class) (10) | 2022.05.18 |
---|---|
[Java] Iterator 인터페이스 (40) | 2022.05.16 |
[Java]컬렉션(Collection Framework) (10) | 2022.05.16 |
[Java]제네릭(Generic) (3) | 2022.05.16 |
[Java] 객체지향 프로그래밍 (4) - 추상 클래스, 인터페이스 (24) | 2022.05.13 |