java TreeSet的排序之自然排序

Posted fanweisheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java TreeSet的排序之自然排序相关的知识,希望对你有一定的参考价值。

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的排序之自然排序的主要内容,如果未能解决你的问题,请参考以下文章

TreeSet之定制排序和自然排序

java回顾之TreeSet

java TreeSet的排序之定制排序

TreeSet源码解析笔记

Java集合框架总结——TreeSet类的排序问题

Java中的TreeSet