黑马程序员技术交流社区

标题: 谁能帮我看看我这个程序哪里有问题呀,,关于TreeSet集合 [打印本页]

作者: 汉谟拉比    时间: 2014-7-7 07:33
标题: 谁能帮我看看我这个程序哪里有问题呀,,关于TreeSet集合
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: 错误: 此处需要接口
作者: 汉谟拉比    时间: 2014-7-7 08:07
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());
                }
        }
}
作者: on-on    时间: 2014-7-7 08:12
代码没问题,我粘贴过来后,将你的TreeSetDemo7类改成了public,文件名改成了TreeSetDemo7,可以正常运行
作者: 汉谟拉比    时间: 2014-7-7 08:14
报的都是一样的错误,,我明明已经实现了接口,为什么还会报错说需要接口
作者: idency    时间: 2014-7-7 08:15
本帖最后由 idency 于 2014-7-7 08:16 编辑

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

作者: m529031854    时间: 2014-7-7 09:40
代码复制过来,就改了下main方法所在的类名和文件名一样就OK啦,没改之前不行,无措但是运行不了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2