主要讲述对list进行排序的几种方式

1、先来个简单的,上代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class sort {
  public static void main(String[] args) {
  List<Integer> list = new ArrayList<Integer>();
  list.add(new Integer(5));
  list.add(new Integer(13));
  list.add(new Integer(4));
  list.add(new Integer(9));
  Collections.sort(list);
  System.out.println(list.toString());
  }
}

程序运行结果:

[4, 5, 9, 13],这种简单的排序直接按照自然顺序进行升序排列。

2、list参数类型相对复杂的排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class sort {
  public static void main(String[] args) {
  List<User> list = new ArrayList<User>();
  list.add(new User("张三", 5));
  list.add(new User("李四", 30));
  list.add(new User("王五", 19));
  list.add(new User("陈十七", 17)); // 陈十七永远十七岁
  Collections.sort(list); // 按年龄排序
  System.out.println(list.toString());
  }
} class User implements Comparable<User>{   private String name; //姓名   private int age; // 年龄   public User(String name, int age) {
    this.name = name;
    this.age = age;
  }   // getter && setter
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
  this.age = age;
  }   @Override
  public String toString() {
    return "User [name=" + name + ", age=" + age + "]";
  }   @Override
  public int compareTo(User user) { //重写Comparable接口的compareTo方法,
    return this.age - user.getAge();  // 根据年龄升序排列,降序修改相减顺序即可
  }
}

程序运行结果:根据年龄升序排列

[User [name=张三, age=5], User [name=陈十七, age=17], User [name=王五, age=19], User [name=李四, age=30]]

3、匿名内部类实现排序

public class sort {
  public static void main(String[] args) {
  List<User> list = new ArrayList<User>();
  list.add(new User("张三", 5));
  list.add(new User("李四", 30));
  list.add(new User("王五", 19));
  list.add(new User("陈十七", 17)); // 陈十七永远十七岁
  Collections.sort(list, new Comparator<User>() {
    @Override
    public int compare(User u1, User u2) {
      int diff = u1.getAge() - u2.getAge();
      if (diff > 0) {
        return 1;
      }else if (diff < 0) {
        return -1;
      }
      return 0; //相等为0
    }
  }); // 按年龄排序
  System.out.println(list.toString());
  }
}

 运行结果:[User [name=张三, age=5], User [name=陈十七, age=17], User [name=王五, age=19], User [name=李四, age=30]]

总结:以上就是list排序经常用的几种方法,前两种方法都是通过实体实现Comparable接口并重写compareTo方法,第一种方式之所以没实现接口并实现compareTo方法,通过查看Interger类源码可以看到,java已经帮我们实现好了,所以不用再次写

最后一种方法通过匿名内部类实现Comparator接口实现compare方法,通过自定义比较器来实现排序。

原文地址:https://www.cnblogs.com/raysource/p/9199089.html

java对list进行排序的更多相关文章

  1. Java内存访问重排序笔记

    >>关于重排序 重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段. 重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境. > ...

  2. Java线性表的排序

    Java线性表的排序 ——@梁WP 前言:刚才在弄JDBC的时候,忽然觉得order-by用太多了没新鲜感,我的第六感告诉我java有对线性表排序的封装,然后在eclipse里随便按了一下“.” ,哈 ...

  3. java数组降序排序之冒泡排序

    import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...

  4. java中的选择排序之降序排列

    import java.util.Arrays;//必须加载 class Demo{ public static void main(String []args){ int[] arr={3,54,4 ...

  5. Java 多条件复杂排序小结

    前言 今天下午做了拼多多在牛客网上的在线笔试题,感觉自己的智商被鄙视到了···不过其中一道题的某一部分引起了我极大的兴趣,感觉可以总结一下,做好积累~ 题目的部分我拍照如下所示 这里面最复杂的就是第3 ...

  6. Java基础-数组常见排序方式

    Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...

  7. Java实现各种内部排序算法

    数据结构中常见的内部排序算法: 插入排序:直接插入排序.折半插入排序.希尔排序 交换排序:冒泡排序.快速排序 选择排序:简单选择排序.堆排序 归并排序.基数排序.计数排序 直接插入排序: 思想:每次将 ...

  8. Java ArrayList的不同排序方法

    本文由 ImportNew - 温布利往事 翻译自 dzone.欢迎加入翻译小组.转载请见文末要求. 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.Arra ...

  9. Java 的八种排序算法

    Java 的八种排序算法 这个世界,需要遗忘的太多. 背景:工作三年,算法一问三不知. 一.八种排序算法 直接插入排序.希尔排序.简单选择排序.堆排序.冒泡排序.快速排序.归并排序和基数排序. 二.算 ...

  10. java中Collections.sort排序详解

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

随机推荐

  1. python----print线程安全问题

    在Python2中print是非线程安全的,Python3中是安全的 https://www.jianshu.com/p/acdaf2ffd81b

  2. XAMPP启动Apache服务时启动失败

    9:48:49 [Apache] Apache Service detected with wrong path 9:48:49 [Apache] Change XAMPP Apache and Co ...

  3. DML子句returing into用法举例

    一.概述: ORACLE的DML语句中可以指定RETURNING语句.使用起来也很简单,和SELECT INTO语句没有多大区别.RETURNING语句的使用在很多情况下可以简化PL/SQL编程. I ...

  4. Airtest---UI自动化测试项目

    Airtest Project是网易游戏团队新开源出来的一款用于UI自动化测试的项目. testerhome中的文档介绍:https://testerhome.com/topics/12486 官方链 ...

  5. vue 监听子组件事件及组件上使用v-model

  6. mysql类型为varchar double类型字符串求和多出多个小数

    -- 错误 SELECT SUM(price) FROM m_user -- 正确 SELECT TRUNCATE ( ) FROM m_user u; -- 正确 SELECT ) ) FROM m ...

  7. Spring MVC的方法返回值和参数传递

    1. SpringMVC方法的返回值类型 3.1String类作为返回值 3.1.1Controller层 /** * 返回值类型为String时,一般用于返回视图名称 * 1.当方法返回值为null ...

  8. 使用 IDEA 打包spring cloud 成 jar在ubuntu 中运行

    1.  打开终端 termial   ,  使用 mvn  install  . 如果提示  mvn 不是xx 命令 ; 2 则需要配置环境变量  :  path :     C:\Program F ...

  9. ORACLE数据库误操作执行了DELETE,该如何恢复数据?

    ORACLE数据库误操作执行了DELETE,该如何恢复数据? 原创 2016年08月11日 17:23:04 10517 作为一个程序员,数据库操作是必须的,但是如果操作失误,一般都会造成比较严重的后 ...

  10. javascript权威指南第21章 Ajax和Comet

    function createXHR(){ if(typeof XMLHttpRequest !='undefined'){ return new XMLHttpRequest(); }else if ...