package com.test.collframework;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/**
* TreeSet是一个有序集合
*/
public class TreeSetTest {
public static void main(String[] args) {
Set<Item> set = new TreeSet<Item>();
set.add(new Item("Toaster",1234));
set.add(new Item("Widget",4562));
set.add(new Item("Modem",9912));
System.out.println(set);
Set<Item> sortByDescription = new TreeSet<Item>(new
Comparator<Item>() { //添加一个比较器
public int compare(Item a, Item b) {
String aDes = a.getDescription();
String bDes = b.getDescription();
return aDes.compareTo(bDes);
}
}
);
sortByDescription.addAll(set);
System.out.println(sortByDescription);
}
}
class Item implements Comparable<Item> {//Item类实现Comparable
private String description;
private int partNumber;
public Item(String aDescription, int aPartNumber) {
this.description = aDescription;
this.partNumber = aPartNumber;
}
public String getDescription() {
return description;
}
public boolean equals(Object otherObj) {
if(this == otherObj){
return true;
}
if(otherObj == null){
return false;
}
if(this.getClass() != otherObj.getClass()){
return false;
}
Item otherItem = (Item) otherObj;
return description.equals(this.getDescription()) && partNumber == otherItem.partNumber;
}
public int hashCode() {
return 13*description.hashCode() + 17*partNumber;
}
public String toString() {
return "[description =" + description + "],[partNumber =" + partNumber + "]";
}
public int compareTo(Item other) { //使用partNumber做比较
return partNumber - other.partNumber;
}
}
打印结果
[[description =Toaster],[partNumber =1234], [description =Widget],[partNumber =4562], [description =Modem],[partNumber =9912]]
[[description =Modem],[partNumber =9912], [description =Toaster],[partNumber =1234], [description =Widget],[partNumber =4562]]