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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;
class Person7
{
        private String name;
        private int age;
        Person7(String name,int age)
        {
                this.name = name;
                this.age = age;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
}
class MyCompare7 implements Comparator
{
        public int compare(Object o1,Object o2)
        {
                Person7 p1 = (Person7)o1;
                Person7 p2 = (Person7)o2;
                int num = p1.getName().compareTo(p2.getName());
                if(num==0)
                        return new Integer (p1.getAge()).compareTo(new Integer (p2.getAge()));
                else
                        return num;
        }
}
class TreeSetDemo7
{
        public static void main(String[] args)
        {
                TreeSet t = new TreeSet(new MyCompare7());
                t.add(new Person7("a1",12));
                t.add(new Person7("a2",13));
                t.add(new Person7("a3",14));
                t.add(new Person7("a3",12));
                t.add(new Person7("a1",12));
                Iterator i = t.iterator();
                while(i.hasNext())
                {
                        Person7 p = (Person7)i.next();
                        System.out.println(p.getName()+"..."+p.getAge());
                }
        }
}
开始还能运行,,后来不知道怎么就不能运行了,,大家看看,麻烦了哈
TreeSetDemo7.java:20: 错误: 此处需要接口

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

倒序浏览
import java.util.*;
class Bijiao implements Comparator
{
        public int compare(Object o1,Object o2)
        {
                String s1 = (String)o1;
                String s2 = (String)o2;
                if(s1.length()==s2.length())
                        return s1.compareTo(s2);
                else if(s1.length()<s2.length())
                        return 1;
                else
                        return -1;
        }
}
class TreeSetDemo8
{
        public static void main(String[] args)
        {
                TreeSet t = new TreeSet(new Bijiao());
                t.add("abc");
                t.add("wde");
                t.add("huji");
                t.add("rgsdf");
                t.add("ji");
                Iterator i = t.iterator();
                while(i.hasNext())
                {
                        System.out.println(i.next());
                }
        }
}
回复 使用道具 举报
代码没问题,我粘贴过来后,将你的TreeSetDemo7类改成了public,文件名改成了TreeSetDemo7,可以正常运行

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
报的都是一样的错误,,我明明已经实现了接口,为什么还会报错说需要接口
回复 使用道具 举报
本帖最后由 idency 于 2014-7-7 08:16 编辑

在我这边运行没有错误!!!
不过楼主的compare方法的返回值可以稍微修改下!
int num = p1.getName().compareTo(p2.getName());
return num == 0 ? p1.getAge() - p2.getAge() : num;
另外楼主可以试着应用一下泛型,那样你的传进compare里面的值就不用强转了

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
代码复制过来,就改了下main方法所在的类名和文件名一样就OK啦,没改之前不行,无措但是运行不了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马