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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看出来问题的大神,请不吝赐教,谢谢!
实现代码如下:
package views;

import java.util.*;

public class Test3 {

        public static void main(String[] args) {

                // TODO Auto-generated method stub
Collection<Student> ss=new TreeSet<Student>();
ss.add(new Student(18,"B"));
ss.add(new Student(18,"A"));
ss.add(new Student(19,"a"));
ss.add(new Student(19,"a"));
ss.add(new Student(20,"f"));
ss.add(new Student(20,"a"));
ss.add(new Student(16,"B"));
ss.add(new Student(17,"A"));
Iterator< Student> it=ss.iterator();
Student stu1=null;
while(it.hasNext())
{
        stu1=it.next();
        System.out.println(stu1.getAge()+"----"+stu1.getName());
}

        }

}

class Student implements Comparator<Student> {
        private int age=0;
        private String name =null;
        public Student (int age,String name){
                this.age=age;
                this.name=name;
               
        }
        public int getAge()
        {
                return age;
        }
        public String getName()
        {
                return name;
        }
       
        public int compare(Student obj1,Student obj2)
        {
                if(obj1.getAge()==obj2.getAge())
                return obj1.getName().compareTo(obj2.getName()) ;
                return obj1.getAge()-obj2.getAge();
        }
}

4 个回复

正序浏览
既然解决了,我就那个经验再走吧
回复 使用道具 举报
改变 发表于 2015-6-18 12:43
额,出现的问题是你实现的是比较器Comparator,这个需要作为形参传递给TreeSet构造器中。在类中的话需要实 ...

是的,已经解决,小问题一枚,谢谢
回复 使用道具 举报
额,出现的问题是你实现的是比较器Comparator,这个需要作为形参传递给TreeSet构造器中。在类中的话需要实现Comparable接口并实现compareTo方法即可。
回复 使用道具 举报
已经解决,修改后代码如下:
package views;

import java.util.*;

public class Test3 {

        public static void main(String[] args) {

                // TODO Auto-generated method stub
Collection<Student> ss=new TreeSet<Student>(new comp());
ss.add(new Student(18,"B"));
ss.add(new Student(18,"A"));
ss.add(new Student(19,"a"));
ss.add(new Student(19,"a"));
ss.add(new Student(20,"f"));
ss.add(new Student(20,"a"));
ss.add(new Student(16,"B"));
ss.add(new Student(17,"A"));
Iterator< Student> it=ss.iterator();
Student stu1=null;
while(it.hasNext())
{
        stu1=it.next();
        System.out.println(stu1.getAge()+"----"+stu1.getName());
}

        }

}

class Student  {
        private int age=0;
        private String name =null;
        public Student (int age,String name){
                this.age=age;
                this.name=name;
               
        }
        public int getAge()
        {
                return age;
        }
        public String getName()
        {
                return name;
        }
       
       
}
class comp implements Comparator<Student>{
public int compare(Student obj1,Student obj2)
{
        if(obj1.getAge()==obj2.getAge())
        {return obj1.getName().compareTo(obj2.getName()) ;
        }
        return obj1.getAge()-obj2.getAge();
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马