• Java List排序


    List排序大体上分为如下两类:

    1、List<Integer> 对Integer、String等类型的List排序

    2、List<Object> 对自定义对象的排序

    本文代码例子只进行简单的介绍,仅起到抛砖引玉作用,读者可以自行开发哈。

    1、对List<Integer>进行排序

    代码如下:

     1 List<Integer> l = new ArrayList<Integer>();
     2 l.add(3);
     3 l.add(1);
     4 l.add(2);
     5 l.add(9);
     6 l.add(7);
     7 
     8 Collections.sort(l);//默认排序(从小到大)
     9 for(int i : l){
    10     System.out.println(i);
    11 }
    12 
    13 Collections.reverse(l);//倒叙(从大到小)
    14 for(int i : l){
    15     System.out.println(i);
    16 }

    代码运行后结果为 12379 97321 先是正序输出(默认从小到大) 后是倒叙输出(从大到小)。

    2、对List<Object>进行排序

    对自定义的对象进行排序,首先对象需要实现Comparable接口,然后重写compareTo方法。代码如下:

    实体对象

     1 /*
     2  * 学生实体
     3  */
     4 class Student implements Comparable<Student>{
     5     public Integer Age = 0;
     6     public String Name = "";
     7     
     8     public Integer getAge() {
     9         return Age;
    10     }
    11     public void setAge(int age) {
    12         Age = age;
    13     }
    14 
    15     public String getName() {
    16         return Name;
    17     }
    18     public void setName(String name) {
    19         Name = name;
    20     }
    21 
    22     public Student(int age,String name){
    23         this.Age = age;
    24         this.Name = name;
    25     }
    26     
    27     @Override
    28     public int compareTo(Student s) {
    29         //自定义比较方法,如果认为此实体本身大则返回1,否则返回-1
    30         if(this.Age >= s.getAge()){
    31             return 1;
    32         }
    33         return -1;
    34     }
    35 }

    排序代码实例:可以用list.sort()排序,也可以用Collections.sort()排序,结果都是一样的

     1 List<Student> list = new ArrayList<Student>();
     2 
     3 list.add(new Student(1,"zhangsan"));
     4 list.add(new Student(6,"zhangsan"));
     5 list.add(new Student(2,"zhangsan"));
     6 list.add(new Student(9,"zhangsan"));
     7 list.add(new Student(1,"zhangsan"));
     8 
     9 list.sort(Comparator.naturalOrder());//正序比较
    10 //Collections.sort(list);//正序比较
    11 
    12 for(Student i : list){
    13     System.out.println(i.getAge());
    14 }

    代码只写了正序排序,结果如下:11269。

    总体上排序简单的实现就是这样子,有很多不足,希望各位大大指正。^_^!!

  • 相关阅读:
    函数嵌套,层级嵌套函数就是闭包,包就是一层的意思,闭就是封装的意思封装的变量
    高阶函数
    装饰器=高阶函数+函数嵌套+闭包
    生产者和消费者模型
    【HDOJ】Power Stations
    【HDOJ】5046 Airport
    【HDOJ】3957 Street Fighter
    【HDOJ】2295 Radar
    【HDOJ】3909 Sudoku
    【POJ】3076 Sudoku
  • 原文地址:https://www.cnblogs.com/yinq/p/6926581.html
Copyright © 2020-2023  润新知