/*树集是一个有序集合,你可以按照任何顺序将元素插入该集合
* 当对该集合进行迭代时,各个值将自动以自动排序后的顺序出现
*Set是不能存放重复的对象,而List是可以存放重复的对象*/
import java.util.*;
public class TreeSetTest {
public static void main(String []args)
{
/*Item是自己定义的对象,要将自己定义的对象插入树集,
* Item类必须实现Compareable接口*/
SortedSet<Item> parts=new TreeSet<Item>();
parts.add(new Item("c-first",1234));
parts.add(new Item("b-second",4578));
parts.add(new Item("a-third",9012));
//System.out.println(parts);
Iterator iter=parts.iterator();
while(iter.hasNext())
System.out.println(iter.next());
/*将一个Comparator对象传递给树集的构造器
* Comparator接口声明一个compare方法
* 实现对于同一个类(例如Item)不同树集对象
* 能按照不同的部件进行排序*/
SortedSet<Item> sortByDescription=new TreeSet<Item>(
new Comparator<Item>()
{
public int compare(Item a,Item b)
{
String descrA=a.getDescription();
String descrB=b.getDescription();
return descrA.compareTo(descrB);
}
});
sortByDescription.addAll(parts);
System.out.println(sortByDescription);
}
}
class Item implements Comparable<Item>
{
private String description;
private int partNumber;
public Item(String aDescription,int aPartNumber)
{
description=aDescription;
partNumber=aPartNumber;
}
public String getDescription()
{
return description;
}
/*改写对象的toString方法,输出对象时按照此格式输出*/
public String toString()
{
return "[description="+description+",partNumber="+partNumber+"]";
}
/*Comparable接口必须实现compareTo方法*/
public int compareTo(Item other)
{
return partNumber-other.partNumber;
}
}
程序输出结果:
[description=c-first,partNumber=1234]
[description=b-second,partNumber=4578]
[description=a-third,partNumber=9012]
[[description=a-third,partNumber=9012], [description=b-second,partNumber=4578], [description=c-first,partNumber=1234]]