java TreeSet的排序之定制排序

Posted fanweisheng

tags:

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

TreeSet的自然排序是根据元素的大小进行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了:

该接口包含int compare(Object o1,Object o2)方法,用于比较两个对象的大小,比较结果和compareTo方法一致;

要实现定制排序,需要在创建TreeSet集合对象时,提供一个一个Comparator对象,该对象里负责集合元素的排序逻辑;

TreeSet(Comparator comparator)

 

Eg:

package july7;

//定制排序的话,必须在创建TreeSet集合对象的时候提供一个Comparator方法

 

import java.util.Comparator;

import java.util.Set;

import java.util.TreeSet;

 

class Student1

    private Integer age;

   

    public Student1(Integer age)

        super();

        this.age = age;

   

 

    public Integer getAge()

        return age;

   

 

    public void setAge(Integer age)

        this.age = age;

   

 

    @Override

    public String toString()

        return age + "";

   

 

class MyComparator implements Comparator

   

    @Override

    public int compare(Object o1, Object o2)

        if(o1 instanceof Student1 & o2 instanceof Student1)

            Student1 s1 = (Student1)o1;

            Student1 s2 = (Student1)o2;

            if(s1.getAge() > s2.getAge())

                return -1;

            else if(s1.getAge() < s2.getAge())

                return 1;

           

       

        return 0;

   

 

public class Demo15

    public static void main(String[] args)

        Set<Student1> s = new TreeSet(new MyComparator());

        /**

         * 要实现定制排序,需要在创建TreeSet集合对象时,提供一个一个Comparator对象,

         * 该对象里负责集合元素的排序逻辑;

         */

        s.add(new Student1(140));

        s.add(new Student1(15));

        s.add(new Student1(11));

        s.add(new Student1(63));

        s.add(new Student1(96));

       

        System.out.println(s);

   

以上是关于java TreeSet的排序之定制排序的主要内容,如果未能解决你的问题,请参考以下文章

java回顾之TreeSet

Java TreeSet的定制排序

Java自用集合练习题:TreeSet的自然排序与定制排序

Java基础——TreeSet

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

TreeSet ------自然排序与定制排序(比较器)