zoukankan      html  css  js  c++  java
  • 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);

        }

    }

  • 相关阅读:
    hdu 2544 单源最短路问题 dijkstra+堆优化模板
    CImg、libjpeg--介绍、配置(操作JPEG)
    【Android归纳】开发中应该注意的事项
    iOS測试——置换測试: Mock, Stub 和其它
    <html>
    系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式
    hdu 1038 Biker&#39;s Trip Odometer(水题)
    java泛型
    从头认识Spring-2.1 自己主动装配(2)-byType(2)
    11.2.0.3 RAC(VCS)节点crash以及hang的问题分析
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11136146.html
Copyright © 2011-2022 走看看