zoukankan      html  css  js  c++  java
  • [java]三种自定义链表排序方式

    代码:

    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    
    class Emp{
        String name;
        int age;
        
        public Emp(String name,int age) {
            this.name=name;
            this.age=age;
        }
        
        public String toString() {
            return "Emp name="+name+" age="+age;
        }
    }
    public class Dept {
        private List<Emp> emps;
        
        public Dept() {
            emps=new ArrayList<Emp>();
            
            emps.add(new Emp("Bill",32));
            emps.add(new Emp("Cindy",42));
            emps.add(new Emp("Cindy",12));
            emps.add(new Emp("Cindy",52));
            emps.add(new Emp("Douglas",92));
            emps.add(new Emp("Andy",22));
        }
        
        public void printEmps() {
            for(Emp emp:emps) {
                System.out.println(emp);
            }
        }
        
        /**
         * Sort by age
         */
        public void sort1() {
            emps.sort(new Comparator<Emp>() {
               public int compare(Emp a1, Emp a2){
                return a1.age-a2.age;
              }
            });
        }
        
        /**
         * Sort by name
         */
        public void sort2() {
            emps.sort((Emp a1, Emp a2)->a1.name.compareTo(a2.name));
        }
        
        /**
         * Sort by name,if same name,sort by age
         */
        public void sort3() {
            emps.sort(new Comparator<Emp>() {
               public int compare(Emp a1, Emp a2){
                  int result=a1.name.compareTo(a2.name);
                  
                  if(result==0) {
                      return a1.age-a2.age;
                  }else {
                      return result;
                  }
              }
            });
        }
        
        public static void main(String[] args) {
            Dept dept=new Dept();
            dept.sort1();
            dept.printEmps();
            
            System.out.println("--------------");
            dept.sort2();
            dept.printEmps();
            
            System.out.println("--------------");
            dept.sort3();
            dept.printEmps();
        }
    }

    输出:

    Emp name=Cindy age=12
    Emp name=Andy age=22
    Emp name=Bill age=32
    Emp name=Cindy age=42
    Emp name=Cindy age=52
    Emp name=Douglas age=92
    --------------
    Emp name=Andy age=22
    Emp name=Bill age=32
    Emp name=Cindy age=12
    Emp name=Cindy age=42
    Emp name=Cindy age=52
    Emp name=Douglas age=92
    --------------
    Emp name=Andy age=22
    Emp name=Bill age=32
    Emp name=Cindy age=12
    Emp name=Cindy age=42
    Emp name=Cindy age=52
    Emp name=Douglas age=92

    --END-- 2019.11.06

  • 相关阅读:
    js数组
    js中严格模式
    js 中bind
    HDU 2846(Trie树)
    HDU 4825(01 Trie树)
    Codeforces 900B (Java高精度或模拟)
    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 I Reversion Count(Java大数)
    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B Goldbach (素数测试,随机化算法)
    HDU 2256(矩阵快速幂)
    HDU 6029(思维)
  • 原文地址:https://www.cnblogs.com/heyang78/p/11803478.html
Copyright © 2011-2022 走看看