62,620
社区成员
发帖
与我相关
我的任务
分享import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class ComparatorDemo {
public static void main(String[] args) {
TreeSet set=new TreeSet(new MyComparator());
set.add("aw");
set.add("dsui");
set.add("ewib");
set.add("9320");
set.add("aw");
set.add("dsui");
for(Iterator it=set.iterator();it.hasNext();){
System.out.println(it.next());
}
}
}
//创建一个比较器
class MyComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
//先按照字符串的长度进行比较,如果长度相同,再按照字符串的字典顺序进行比较
if(o1==null||o2==null){
throw new NullPointerException("对不起,请传两个对象");
}
//如果不为空,则判断是不是String对象
if(!(o1 instanceof String) || !(o2 instanceof String)){
throw new ClassCastException("类型错误");
}
String s1=(String)o1;
String s2=(String)o2;
int temp=s1.length()-s2.length();
return temp==0?s1.compareTo(s2):temp;
}
}
package temp;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class MainClass {
public static void main(String[] args) throws Exception {
TreeSet set=new TreeSet(new MyComparator());
set.add("aw");
set.add("dsui");
set.add("ewib");
set.add("9320");
set.add("aw");
set.add("dsui");
for(Iterator it=set.iterator();it.hasNext();){
System.out.println(it.next());
}
}
}
//创建一个比较器
class MyComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
//先按照字符串的长度进行比较,如果长度相同,再按照字符串的字典顺序进行比较
if(o1==null||o2==null){
throw new NullPointerException("对不起,请传两个对象");
}
//如果不为空,则判断是不是String对象
if(!(o1 instanceof String) || !(o2 instanceof String)){
throw new ClassCastException("类型错误");
}
String s1=(String)o1;
String s2=(String)o2;
int temp=s1.length()-s2.length();
System.out.println("MyComparator "+o1.toString()+" "+o2.toString());
return temp==0?s1.compareTo(s2):temp;
}
}
调用了呀,结果也是按照长度排序的