Comparable 인터페이스
최초의 기본정렬 기준을 세우는 데 사용한다.
Cmparable 인터페이스 구현
compareTo메서드를 오버라이딩 해준다.
두 값을 비교하여 비교하는 값보다 작으면 -1을 리턴, 비교하는 값보다 크면 1을 리턴, 같다면 0을 리턴한다.
Comparator 인터페이스
기본 정렬 이외의 다른 정렬 기준을 세우는 데 사용한다.
compare()를 오버라이딩 해준다.
매개변수 값으로 두개가 주어지면 o1, o2를 비교하여 정렬 기준을 정한다.
두 값을 비교하여 비교하는 값보다 작으면 -1을 리턴, 비교하는 값보다 크면 1을 리턴, 같다면 0을 리턴한다.
- 예제 코드
Person.java
public class Person implements Comparable<Person> {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Person o) {
//나이를 기준으로 오름차순 정렬
if(age < o.age) {
return -1;
} else if(age > o.age) {
return 1;
}
return 0;
}
}
SortExam.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortExam2 {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>();
list.add(new Person("조자바",23));
list.add(new Person("이자바",99));
list.add(new Person("강자바",58));
list.add(new Person("오자바",77));
list.add(new Person("유자바",62));
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
//이름을 기준으로 오름차순 정렬
if(o1.getName().compareTo(o2.getName()) >0) {
return 1; //1 자리를 바꾼
} else if(o1.getName().compareTo(o2.getName())<0) {
return -1;
}
return 0;
}
});
System.out.println(list);
}
}
'Java' 카테고리의 다른 글
[Java] 쓰레드(Thread) 정리 (0) | 2020.07.26 |
---|---|
[Java] 입출력(IO) File, 직렬화(Serialization) (0) | 2020.07.25 |
[Java] 자료구조 List, Set, Map (0) | 2020.07.24 |
[Java] 입출력(IO) 정리 (0) | 2020.07.22 |
[Java] 정규표현식(Regular Expression) (0) | 2020.07.20 |