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

  • 相关阅读:
    (16)C#继承
    (3)新概念英语一(11-20)lessons
    (15)C#集合
    (14)编码
    (2)新概念英语一(1-10)lessons
    (13)C#数组和元组
    Uva 11729 Commando War
    Uva 11292 Dragon of Loowater
    谈谈单元最短路
    [USACO 3.3.1]骑马修栅栏t
  • 原文地址:https://www.cnblogs.com/heyang78/p/11803478.html
Copyright © 2011-2022 走看看