애완동물

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);
	}
}

+ Recent posts