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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付凯鹏 中级黑马   /  2013-11-14 14:16  /  1153 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;
import java.util.*;
public class TrSet {
        public static void main(String[] args){
                TreeSet<String> t=new TreeSet<String>(new MyComparator());
                t.add("jik");
                t.add("k");
                t.add("kuii");
                t.add("jo");
                Iterator<String> it=t.iterator();
                while(it.hasNext())
                {
                        System.out.println(it.next());
                }
        }

}
class MyComparator implements Comparator{
        public int Compare(Object o1,Object o2){
                String s1=(String)o1;
                String s2=(String)o2;
                int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));
                if(num==0)
                        return s1.compareTo(s2);
                return num;
        }
}
如上面程序。系统为什么提示我MyComparator出错了,它不是类名?按自己的习惯定义吗????


3 个回复

倒序浏览
MyComparator 类中的Compare方法你开头第一个是大写的,改成compare就ok了。你那个是大写的话,就没有实现Comparator接口中的compare方法,而是在类中定义了一个Compare方法,所以这个类是抽象了,当然按照你的的逻辑是想实现这个接口的。

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
class MyComparator implements Comparator

我把你的代码放到MYECLIPSE中 提示你没有重写public int compare(Object o1, Object o2)

发现你的C是大写!  同学注意注意啊  看看是不是这个问题
回复 使用道具 举报
非常感谢,总是犯这些低级错误。以后会好好注意的。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马