zoukankan      html  css  js  c++  java
  • Collections.sort的三种用法

    /**
    * @author guwh
    * @version 创建时间:2011-11-3 上午10:49:36
    * 类说明
    */ 
    package com.jabberchina.test;
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class SortTest {
        
        
        
        public static void main(String[] args) {
            List<String> lists = new ArrayList<String>();
            List<A> list = new ArrayList<A>();
            List<B> listB = new ArrayList<B>();
            lists.add("5");
            lists.add("2");
            lists.add("9");
            //lists中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序
            Collections.sort(lists);
            
            A aa = new A();
            aa.setName("aa");
            aa.setOrder(1);
            A bb = new A();
            bb.setName("bb");
            bb.setOrder(2);
            list.add(bb);
            list.add(aa);
            //list中的对象A实现Comparable接口
            Collections.sort(list);
            
            B ab = new B();
            ab.setName("ab");
            ab.setOrder("1");
            B ba = new B();
            ba.setName("ba");
            ba.setOrder("2");
            listB.add(ba);
            listB.add(ab);
            //根据Collections.sort重载方法来实现
            Collections.sort(listB,new Comparator<B>(){
                @Override
                public int compare(B b1, B b2) {
                    return b1.getOrder().compareTo(b2.getOrder());
                }
                
            });
            
            System.out.println(lists);
            System.out.println(list);
            System.out.println(listB);
            
        }
    
    }
    
    class A implements Comparable<A>{
        private String name;
        private Integer order;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
        public Integer getOrder() {
            return order;
        }
        public void setOrder(Integer order) {
            this.order = order;
        }
        @Override
        public String toString() {
            return "name is "+name+" order is "+order;
        }
        @Override
        public int compareTo(A a) {
            return this.order.compareTo(a.getOrder());
        }
        
    }
    
    class B{
        private String name;
        private String order;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getOrder() {
            return order;
        }
        public void setOrder(String order) {
            this.order = order;
        }
        @Override
        public String toString() {
            return "name is "+name+" order is "+order;
        }
    }
    打印的结果为:
    [2, 5, 9]
    [name is aa order is 1, name is bb order is 2]
    [name is ab order is 1, name is ba order is 2]

    -----------------------------------------------------
    还有一个做法就是在Merge Intevals中使用的内部类的方法
  • 相关阅读:
    Redis主从同步原理-SYNC【转】
    redis3.0集群部署和测试
    Zabbix3.0配置邮件报警
    3分钟学会git命令的基础使用
    Rsync文件同步工具
    logstash grok 内置正则
    logrotate实现Mysql慢日志分割
    Python之unittest测试代码
    Zabbix如何实现批量监控端口状态
    Centos7搭建Confluence破解版
  • 原文地址:https://www.cnblogs.com/Phoebe815/p/3786210.html
Copyright © 2011-2022 走看看