我给你看个例子,一看就明白了。
public class Demo{
public static void main(String args[]){
TreeSet ts = new TreeSet(new MyComp());
ts.add("C");
ts.add("A");
ts.add("B");
ts.add("E");
ts.add("F");
ts.add("D");
// Get an iterator
Iterator i = ts.iterator();
// Display elements
while(i.hasNext()) {
Object element = i.next();
System.out.print(element + " ");
}
System.out.println();
}
}
class MyComp<T> implements Comparator<T>{
public int compare(T a, T b) {
String aStr, bStr;
aStr = (String) a;
bStr = (String) b;
// reverse the comparison
return bStr.compareTo(aStr);
}
}
这个是treeset通过实现comparator接口进行对比的,后面的mycomp是比较器,这是treeset的一种特性,,在你传值的时候他会根据这个比较器进行存放,你取出的时候是已经比较好的。逆序是因为你实现的的mycomp中以b作为基准也就是后一个值比前一个值。他存放就是以后来的值为准不断调整进来过的值。。。你把比较器的最后return改成return aStr.compareTo(bStr); 就会变成正的了。。。至于这个compareTo则是string类的比较方法。 根据大小返回正数 ,负数,0 |