YJ의 새벽

JAVA (Comparable , Comparator) 본문

SelfStudy/JAVA

JAVA (Comparable , Comparator)

YJDawn 2023. 2. 2. 14:02

--객체 정렬에 필요한 메서드를 정의한 인터페이스

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