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

  • 相关阅读:
    HDU 3681 Prison Break 越狱(状压DP,变形)
    POJ 2411 Mondriaan's Dream (状压DP,骨牌覆盖,经典)
    ZOJ 3471 Most Powerful (状压DP,经典)
    POJ 2288 Islands and Bridges (状压DP,变形)
    HDU 3001 Travelling (状压DP,3进制)
    POJ 3311 Hie with the Pie (状压DP)
    POJ 1185 炮兵阵地 (状压DP,轮廓线DP)
    FZU 2204 7
    POJ 3254 Corn Fields (状压DP,轮廓线DP)
    ZOJ 3494 BCD Code (数位DP,AC自动机)
  • 原文地址:https://www.cnblogs.com/heyang78/p/11803478.html
Copyright © 2011-2022 走看看