A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

没有养成写注释习惯,找问题有点难,代码如下:
package Test;

import java.util.*;

public class Test1 {
        public static void main(String[] args) {
                TreeSet ts = new TreeSet(new myCom());
                ts.add("a");
                ts.add("b");
                ts.add("abcd");
                ts.add("abc");
                Iterator it = ts.iterator();
                while (it.hasNext()) {
                        sop(it.next());
                }
        }

        public static void sop(Object obj) {
                System.out.println(obj);
        }

}

// 自定义比较器
class myCom implements Comparator {

        public int compare(String str1, String str2) {
                int num = new Integer(str1.length()).compareTo(str2.length());
                if (num == 0)
                        return s1.compareTo(s2);
                return num;
        }
}
打印结果就一个啊!问题出在哪啊?

4 个回复

正序浏览
类型转换了么?
回复 使用道具 举报
何艳梅 发表于 2014-8-27 15:01
你的比较器的方法根本就没有重写Comparator的compare(),
把这一行class myCom implements Comparator {改成 ...

用泛型,我试下
回复 使用道具 举报
你的比较器的方法根本就没有重写Comparator的compare(),
把这一行class myCom implements Comparator {改成
class myCom implements Comparator<String> {就好啦。
回复 使用道具 举报
来大神帮帮忙解答下啊!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马