码迷,mamicode.com
首页 > 编程语言 > 详细

java TreeSet的排序之自然排序

时间:2019-07-05 09:40:33      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:集合   imp   复杂   str   接口   java   pareto   object   情况   

TreeSet会调用元素的compareTo(Object o)方法来比较元素之间的大小关系,然后将集合里的元素按升序排列.此时需要排序元素的类必须实现Compareble接口,并覆写其int compareTo(Object o)方法;

该方法用于比较对象,若:obj1,compareTo(obj2),返回0,表示两个对象相等,若返回一个正整数,表示obj1大于obj2,若返回一个负整数,表示obj1小于obj2;

对于TreeSet集合而言,判断两个对象相等的标准是:

compareTo()方法比较返回 0;

 

package july7;

//TreeSet可以自动进行排序!最简单的情况

 

import java.util.Set;

import java.util.TreeSet;

 

public class Demo13 {

    public static void main(String[] args) {

       

        Set<Integer> s = new TreeSet<Integer>();

        s.add(1);

        s.add(192);

        s.add(123);

       

        s.add(56);

        s.add(13);

        s.add(96);

        System.out.println(s);//[1, 13, 56, 96, 123, 192]

    }

}

 

稍复杂点的

 

package july7;

//TreeSet的自然排序,升序

 

import java.util.Set;

import java.util.TreeSet;

 

class Student implements Comparable{//必须实现接口

    private Integer age;

 

    public Student(Integer age) {

        super();

        this.age = age;

    }

 

    @Override

    public int compareTo(Object o) {//比较的规则,运用泛型可以消除强转!

        if(o instanceof Student){

            Student s = (Student)o;

            return this.age.compareTo(s.age);

        }

        return 0;

    }

 

    @Override

    public String toString() {

        return age+"" ;

    }

}

 

public class Demo14 {

    public static void main(String[] args) {

       

        Set<Student> s = new TreeSet();

        s.add(new Student(140));

        s.add(new Student(15));

        s.add(new Student(11));

        s.add(new Student(63));

        s.add(new Student(96));

        System.out.println(s);//[11, 15, 63, 96, 140]

    }

}

java TreeSet的排序之自然排序

标签:集合   imp   复杂   str   接口   java   pareto   object   情况   

原文地址:https://www.cnblogs.com/fanweisheng/p/11136144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!