集合中存储时的对象重写比较方法

来源:互联网 发布:一度教育java 编辑:程序博客网 时间:2024/06/07 13:30

当往集合里存储对象时,往Set里

import java.util.*;class Student implements Comparable{    String name ;    int age ;    Student(String name,int age){this.name = name;this.age = age;}    public int compareTo(Object obj){        Student st = (Student) obj;        int num = this.age - st.age;        return num==0?this.name.compareTo(st.name):num;    }    public String toString(){        return name+"  "+age;    }}class practice1 {    public static void main(String[] args)     {        //String str = "oeiproitwoeuraecdefgabcdefg";        TreeSet ts = new TreeSet();        ts.add(new Student("liwu",32));        ts.add(new Student("wangwu",43));        ts.add(new Student("liwu",32));        sop(ts);    }    public static void sop(Object obj){        System.out.println(obj);    }}
还可以实现Comparactor接口,在TreeSet的构造方法中传递进去这个比较类的对象class ComByName implements Comparator{    public int compare(Object obj1,Object obj2)    {        if(!(obj1 instanceof Student))            throw new ClassCastException("类型转换异常");        if(!(obj2 instanceof Student))            throw new ClassCastException("类型转换异常");        Student stu1 = (Student)obj1;        Student stu2 = (Student)obj2;        int num = stu1.getName().compareTo(stu2.getName());        return num==0?stu1.getAge()-stu2.getAge():num;    }}
0 0