//本程序创建了两个item 对象的树集,
// 第一个按照部件编号排序,这是item对象的默认排序顺序,
// 第二个使用一个定制的比较器来按照描述信息排序
import java.util.*;
//本程序创建了两个item 对象的树集,第一个按照部件编号排序,这是item对象的默认排序顺序,
// 第二个使用一个定制的比较器来按照描述信息排序
public class TreeSetTest {
public static void main(String[] args)
{
SortedSet<Item> parts=new TreeSet<Item>();
parts.add(new Item("Toaster",1234));
parts.add(new Item("Widget",1162));
parts.add(new Item("Modem",9912));
System.out.println("sort by partNumber :"+parts);
SortedSet<Item> sortByDescription=new TreeSet<Item>(new Comparator<Item>() {
@Override
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("sort by Description:"+sortByDescription);
}
}
//An item with a description and a part number
class Item implements Comparable<Item>
{
//构建一个 item
public Item(String aDescription,int aPartNumber)
{
description=aDescription;
partNumber=aPartNumber;
}
//get description of the item
public String getDescription()
{
return description;
}
public String toString()
{
return "description="+description+",partNumber="+partNumber+"]";
}
public boolean equals(Object otherObject)
{
if(this==otherObject)return true;
if(otherObject==null)return false;
if(getClass()!=otherObject.getClass())return false;
Item other=(Item)otherObject;
return description.equals(other.description)&&partNumber==other.partNumber;
}
public int hashCode()
{
return 13*description.hashCode()+17*partNumber;
}
public int compareTo(Item other)
{
return partNumber-other.partNumber;
}
private String description;
private int partNumber;
}
运行结果:
sort by partNumber :[description=Widget,partNumber=1162], description=Toaster,partNumber=1234], description=Modem,partNumber=9912]]
sort by Description:[description=Modem,partNumber=9912], description=Toaster,partNumber=1234], description=Widget,partNumber=1162]]
Java TreeSet排序实践:按部件编号与描述排序
该程序展示了如何使用Java TreeSet创建两个排序集合,一个按默认的部件编号排序,另一个通过自定义比较器按描述信息排序。通过添加Item对象并打印结果,显示了两种不同的排序方式。

被折叠的 条评论
为什么被折叠?



