day15-02/03-集合框架(TreeSet存储自定义对象)

2020-06-22  本文已影响0人  姗婷

往TreeSet集合中存储自定义对象学生。

想按照学生的年龄进行排序。

记住:排序时,主要条件相同时,一定要判断次要条件。

TreeSet:可以对Set集合中的元素进行排序
底层数据结构是二叉树。
保证元素唯一性的依据
comparenTo方法return 0。

return -1,小到大,升序排列。
return 1,大到小,降序排列。
return 0,只取一个。

TreeSet拍下的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法,这种方式也称为元素的自然顺序。或者叫默认顺序。


二叉树.PNG
import java.util.*;


class Student implements Comparable//该接口强制让学生具备比较性
{
    private String name;
    private int age;
    Student(String name,int age)
    {
        this.name = name;
        this.age = age;
    }
    //复写compareTo方法
    public int compareTo(Object obj)
    {
/*return -1,小到大,升序排列。
return 1,大到小,降序排列。
return 0,只取一个。
*/
return -1;
/*
        if(!(obj instanceof Student))
            throw new RuntimeException("不是学生对象");
        Student s = (Student)obj;

        System.out.println(this.name+"....compareto"+s.name);
        
        //判断主要条件
         if(this.age>s.age)
             return 1;
         if(this.age ==s.age)
             //判断次要条件
             return this.name.compareTo(s.name);
         return -1;
*/  
    }
    public String getName()
    {
        return name;
    }
    public int getAge()
    {
        return age;
    }
}


class TreeSetTest
{
    public static void main(String[] args) 
    {
        TreeSet ts = new TreeSet();
        ts.add(new Student("lisi02",22));
        ts.add(new Student("lisi007",20));
        ts.add(new Student("lisi09",19));
        ts.add(new Student("lisi08",19));
        //ts.add(new Student("lisi01",40));

        Iterator it =  ts.iterator();
        while(it.hasNext())
        {
            Student stu = (Student)it.next();
            sop(stu.getName()+"...."+stu.getAge());
        }
    }

    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}
上一篇下一篇

猜你喜欢

热点阅读