Comparator는 Comparable과 성질을 똑같다. 다만 입력받는 객체의 갯수가 다르다.
Comparator는 2개의 동일한 성질의 객체를 입력받아야하고
Comparable은 하나만 입력받아도 된다.
그럼 비교해보기 위해 클래스를 만든다
.
.
package Set;
public class Fruit {
public String name;
public int price;
public Fruit(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Fruit [name=" + name + ", price=" + price + "]";
}
}
.
.
그리고 비교하기 위해서 Comparator 클래스를 따로 생성한다.
.
.
package Set;
import java.util.Comparator;
public class DescendingComparatorEx2 implements Comparator<Fruit>{
// 과일의 가격을 기준으로 정렬
@Override
public int compare(Fruit o1, Fruit o2) {
if(o1.price < o2.price) return 1;
else if(o1.price == o2.price) return 0;
else return -1;
}
}
.
.
여기서 Comparator 인터페이스를 상속받아야한다.
제네릭타입은 우리가 입력받고 싶은 타입으로 지정한다.
이번에는 내림차순으로 정리하기위해 앞에서 했던 조건을 반대로 적었다.
.
.
package Set;
import java.util.*;
public class ComparatorEx1 {
public static void main(String[] args) {
TreeSet<Fruit> tSet = new TreeSet<Fruit>(new DescendingComparatorEx2());
tSet.add(new Fruit("Grape", 5000));
tSet.add(new Fruit("Water Melon", 10000));
tSet.add(new Fruit("Strawberry", 3000));
// 첫번째 출력 방법
for(Fruit f : tSet) {
System.out.println(f);
}
System.out.println();
// 두번째 출력 방법
Iterator<Fruit> it = tSet.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
.
.
.
.
가격을 기준으로 내림차순으로 정리해봤다.
출력방법을 두가지를 사용하였다.
advanced for문과 Iterator를 이용하여 출력하는 방법 2가지를 사용하였다.
728x90
반응형
'Java > 본격 Java 컬렉션' 카테고리의 다른 글
[Java] Map을 이용하여 로그인 시스템 구현하기 (0) | 2020.07.14 |
---|---|
[Java] HashMap 개념 및 실습 (0) | 2020.07.14 |
[Java] Comparable 개념 및 실습 (0) | 2020.07.14 |
[Java] TreeSet 개념 (0) | 2020.07.13 |
[Java] HashSet 개념 (0) | 2020.07.13 |