예제 9월 9일 TreeSet을 이용한 정렬 연습 (애완동물을 나이순으로 오름차순 정렬하는 예)
2009. 9. 9. 11:29
애완동물
package net.jeongsam.collection; public class Pet { private String name; public int age; public Pet(String name) { this.name = name; } public Pet(String name, int age) { this(name); this.age = age; } public Pet() { } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null || age == 0) ? 0 : name.hashCode() + age); return result; } @Override public boolean equals(Object o) { boolean isEqual = false; if ((o instanceof Pet) && ((Pet)o).name.equals(name) && ((Pet)o).age == age) { isEqual = true; } return isEqual; } @Override public String toString() { return "[" + name + " : " + age + "]"; } }
Comparator를 구현한 클래스 선언
package net.jeongsam.collection; import java.util.Comparator; public class AgeComp<T> implements Comparator<T> { @Override public int compare(T o1, T o2) { Pet p1 = (Pet)o1; Pet p2 = (Pet)o2; int result = 0; if ((p1.age - p2.age) > 0) result = 1; if ((p1.age - p2.age) < 0) result = -1; return result; } }
TreeSet에 적용
package net.jeongsam.collection; import java.util.*; class SortedEx04 { public static void main(String[] args) { TreeSet<Pet> sortedPetSet = new TreeSet<Pet>(new AgeComp<Pet>()); Collections.addAll(sortedPetSet, new Pet("치와와", 4), new Pet("누렁이", 3), new Pet("손오공", 5), new Pet("저팔계", 2)); System.out.println(sortedPetSet); } }