zoukankan      html  css  js  c++  java
  • List 排序

    package collection.list;
    
    import java.text.Collator;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    
    import testforstring.stringsomemonth;
    
    public class listCustomSort {
        
        public static void main(String[] args) {
            //一、数字、英文排序(保证list集合只有数字或者英文一种情况)
            List li = new ArrayList();
            li.add("1");
            li.add("email");
            li.add("2");
            li.add("comparator");
            li.add("admin");
            
    //        li.add(3);
    //        li.add(2);
    //        li.add(1);
            Collections.sort(li);
            System.out.println("升序:"+li);
            Collections.reverse(li);  
            System.out.println("降序:"+li);
            System.out.println("==================================================");
            
            //二、中文排序:(中文:阿拉伯最前、其次拼音、再次汉字)
            List<String> li2 = new ArrayList<String>();
            li2.add("梁朝伟");
            li2.add("周星驰");
            li2.add("黎明");
            li2.add("张学友");
            li2.add("Eason");
            li2.add("5566");
            Comparator<Object> Chinacompa = Collator.getInstance(java.util.Locale.CHINA);
            Collections.sort(li2, Chinacompa);
            System.out.println(li2);
            System.out.println("==================================================");
            
            //三、实体类排序
            List<Applicant> userlist = new ArrayList<Applicant>();
            userlist.add(new Applicant("Eason(e)",33,"本科",8.5));
            userlist.add(new Applicant("周星驰(z)",47,"大专",11.8));
            userlist.add(new Applicant("黎姿(l)",28,"本科",8.5));
            userlist.add(new Applicant("吴孟达(w)",28,"大专以下",9.7));
            Comparator<Applicant> cmp = new ComparatorUser();
            Collections.sort(userlist, cmp);
            for (Applicant user : userlist) {
                System.out.println(user.getName());
            }
            
            //mian foot
        }
    }
    
    class ComparatorUser implements Comparator<Applicant> {
        @Override
        public int compare(Applicant u1, Applicant u2) {
            Integer u1xl = xlComparator(u1.getXl());
            Integer u2xl = xlComparator(u2.getXl());
            //1、先按学历排序
            int flag = u1xl.compareTo(u2xl);
            //2、学历相同比较经验
            if (flag==0) {
                flag=u1.getGzjy().compareTo(u2.getGzjy());
                //3、经验相同比较年龄
                if (flag==0) {
                    flag=u1.getAge().compareTo(u2.getAge());
                    if (flag==0) {
                        return u1.getName().compareTo(u2.getName());
                    } else {
                        return flag;
                    }
                } else {
                    return flag;
                }
            } else {
                return flag;
            }
        }
        
        public Integer xlComparator(String xl){
            int flag = 0;
            if ("本科".equals(xl)) {
                flag = 0;
            } else if("大专".equals(xl)){
                flag = 1;
            } else if("大专以下".equals(xl)){
                flag = 2;
            }
            return flag;
        }
    }
    
    class Applicant {
        private String name;
        private Integer age;
        private String xl;
        private Double gzjy;
        
        public Applicant() {
            super();
        }
        public Applicant(String name, Integer age,String xl,Double gzjy) {
            super();
            this.name = name;
            this.age = age;
            this.xl = xl;
            this.gzjy = gzjy;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
        public String getXl() {
            return xl;
        }
        public void setXl(String xl) {
            this.xl = xl;
        }
        public Double getGzjy() {
            return gzjy;
        }
        public void setGzjy(Double gzjy) {
            this.gzjy = gzjy;
        }
    }
  • 相关阅读:
    van Emda Boas
    斐波那契堆
    NTT
    FFT
    KDTree
    扩展kmp
    kmp
    Dancing Links
    树的prufer编码
    有向图最小路径覆盖
  • 原文地址:https://www.cnblogs.com/ckxlovejava/p/8534656.html
Copyright © 2011-2022 走看看