YJ의 새벽
JAVA (Comparable , Comparator) 본문
--객체 정렬에 필요한 메서드를 정의한 인터페이스
Comparable : 기본 정렬기준을 구현하는데 사용
Comparator : 기본 정렬기준 외에 다른기준으로 정렬하고자할때 사용
compare() 와 compareTo() 는 두 객체의 비교결과를 반환하도록 작성,
같으면 0 오른쪽이 크면 음수(-) , 작으면 양수 (+)
- Comparable Example
import java.util.Iterator;
import java.util.TreeSet;
class Person implements Comparable<Person> {
public String name;
public int age;
public Person(String name, int age) {
this.name=name;
this.age=age;
}
@Override
public int compareTo(Person o) {
if(age< o.age) return -1;
else if ( age == o.age) return 0;
else return 1;
}
}
public class ComparableExample {
public static void main(String[] args) {
TreeSet<Person> treeSet = new TreeSet<>();
treeSet.add(new Person("홍길동",45));
treeSet.add(new Person("김자바",25));
treeSet.add(new Person("박지원",31));
Iterator<Person> iterator = treeSet.iterator();
while(iterator.hasNext()) {
Person person = iterator.next();
System.out.println(person.name +" " + person.age);
}
}
}
- Comparator Example (Desending)
import java.util.Comparator;
public class DesendingComparator 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;
}
}
import java.util.Iterator;
import java.util.TreeSet;
class Fruit {
public String name;
public int price;
public Fruit(String name, int price) {
this.name=name;
this.price = price;
}
}
public class ComparatorExample {
public static void main(String[] args) {
TreeSet<Fruit> treeSet = new TreeSet<>(new DesendingComparator());
treeSet.add(new Fruit("포도",3000));
treeSet.add(new Fruit("수박",10000));
treeSet.add(new Fruit("딸기",6000));
Iterator<Fruit> iterator = treeSet.iterator();
while(iterator.hasNext()) {
Fruit fruit = iterator.next();
System.out.println(fruit.name+ ": "+fruit.price);
}
}
}
'SelfStudy > JAVA' 카테고리의 다른 글
JAVA (HashMap) (2) | 2023.02.03 |
---|---|
JAVA (HashSet, TreeSet) (0) | 2023.02.02 |
JAVA (Iterator, Arrays) (0) | 2023.02.02 |
JAVA (Stack,Queue) (0) | 2023.02.02 |
JAVA (ArrayList,LinkedList) (0) | 2023.02.01 |
Comments