- 使用TreeSet和Comparator,编写TreeSetTest类,要求对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列。
- 本次代码由我们班同学敲出,比我的想法好很多,大家可以借鉴。
package test05;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args){
Set s=new TreeSet();
s.add(new Treeset("HashSet"));
s.add(new Treeset("ArrayList"));
s.add(new Treeset("TreeMap"));
s.add(new Treeset("HashMap"));
s.add(new Treeset("TreeSet"));
s.add(new Treeset("LinkedList"));
System.out.println("升序:");
printAscendingOrder(s);
System.out.println("降序:");
printDescendingOrder(s);
}
public static void printAscendingOrder (Collection c){
Iterator iter=c.iterator();
while (iter.hasNext()) {
Object obj=iter.next();
System.out.println(obj);
}
}
public static void printDescendingOrder (Collection c){
Object x[];
x=new Object[c.size()];
int i=0;
Iterator iter=c.iterator();
while (iter.hasNext()) {
Object obj=iter.next();
x[i++]=obj;
}
for(int j=i-1;j>0;j--){
System.out.println(x[j]);
}
}
}
class Treeset implements Comparable{
String x;
public Treeset(){
}
public Treeset(String x){
this.x=x;
}
public boolean equals(Object obj){
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(!(obj instanceof Treeset)){
return false;
}
Treeset s=(Treeset)obj;
return (s.x==this.x);
}
public int hashCode(){//重写Comparable接口的hashCode方法
return x.hashCode();
}
public String toString(){
return x;
}
public int compareTo(Object obj){//重写Comparable接口的compareTo方法
Treeset s=null;
if(obj instanceof Treeset){
s=(Treeset)obj;
}
int result =0;
result=this.x.hashCode() < s.x.hashCode() ?1:(this.x.equals(s.x) ?0 :-1);
return result;
}
}