当前位置:   article > 正文

Java List排序的几种方式整理_java list 排序

java list 排序

目录

一、前言

二、正文

1、方案一

2、方案二

3、方案三

4、方案四

三、总结

四、结尾


一、前言

在有的时候我们会需要对List进行排序,在Java中如何实现呢?本文记录一下Java中对List的几种排序方式,希望本文对你有所帮助。

二、正文

1、方案一

1.1、简单的排序方法,如以下代码

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class sort {
  5.   public static void main(String[] args) {
  6.    List<Integer> list = new ArrayList<Integer>();
  7.    list.add(new Integer(3));
  8.    list.add(new Integer(14));
  9.    list.add(new Integer(6));
  10.    list.add(new Integer(10));
  11. // 简单的int类似数据,可以使用Collections的sort方法即可完成排序
  12.    Collections.sort(list);
  13.    System.out.println(list.toString());
  14.   }
  15. }

输出结果为:

[3,6,10,14]

这种简单的排序会直接按自然数据输出。

2、方案二

2.1、参数相对复杂的排序方式,参数为对象的情况

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class sort {
  5.   public static void main(String[] args) {
  6.    List<User> list = new ArrayList<User>();
  7.    list.add(new User("张三", 5));
  8.    list.add(new User("李四", 30));
  9.    list.add(new User("王五", 19));
  10.    list.add(new User("王麻子", 17));
  11. // 按年龄排序
  12.    Collections.sort(list);
  13.    System.out.println(list.toString());
  14.   }
  15. }
  16. class User implements Comparable<User>{
  17.   private String name; //姓名
  18.   private int age; // 年龄
  19.   public User(String name, int age) {
  20.     this.name = name;
  21.     this.age = age;
  22.   }
  23.   // getter && setter
  24.   public String getName() {
  25.     return name;
  26.   }
  27.   public void setName(String name) {
  28.     this.name = name;
  29.   }
  30.   public int getAge() {
  31.     return age;
  32.   }
  33.   public void setAge(int age) {
  34.   this.age = age;
  35.   }
  36.   @Override
  37.   public String toString() {
  38.     return "User [name=" + name + ", age=" + age + "]";
  39.   }
  40.   @Override
  41.   public int compareTo(User user) {
  42. // 重写Comparable接口的compareTo方法,根据年龄升序排列,降序修改相减顺序即可
  43.     return this.age - user.getAge();
  44.   }
  45. }

程序运行结果:按年龄升序排序

[User [name=张三, age=5], User [name=王麻子, age=17], User [name=王五, age=19], User [name=李四, age=30]]

3、方案三

3.1、使用匿名内部类实现排序

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class sort {
  5.   public static void main(String[] args) {
  6.    List<User> list = new ArrayList<User>();
  7.    list.add(new User("张三", 5));
  8.    list.add(new User("李四", 30));
  9.    list.add(new User("王五", 19));
  10.    list.add(new User("王麻子", 17));
  11.    Collections.sort(list, new Comparator<User>() {
  12.      @Override
  13.      public int compare(User u1, User u2) {
  14.        int diff = u1.getAge() - u2.getAge();
  15.        if (diff > 0) {
  16.          return 1;
  17.        }else if (diff < 0) {
  18.          return -1;
  19.        }
  20.        return 0; //相等为0
  21.      }
  22.    }); // 按年龄排序
  23.    System.out.println(list.toString());
  24.   }
  25. }

运行结果为:

[User [name=张三, age=5], User [name=王麻子, age=17], User [name=王五, age=19], User [name=李四, age=30]]

4、方案四

4.1、也是最简介的方案,博主推荐使用,一行代码即可搞定

  1. import java.util.Collections;
  2. import java.util.List;
  3. public class sort {
  4. public static void main(String[] args) {
  5.    List<User> list = new ArrayList<User>();
  6.    list.add(new User("张三", 5));
  7.    list.add(new User("李四", 30));
  8.    list.add(new User("王五", 19));
  9.    list.add(new User("王麻子", 17));
  10. // 这一行代码即可完成排序
  11.    list.sort(Comparator.comparing(User::getAge));
  12.    System.out.println(list.toString());
  13.   }
  14. }

输出结果为:

[User [name=张三, age=5], User [name=王麻子, age=17], User [name=王五, age=19], User [name=李四, age=30]]

三、总结

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

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

四、结尾

如果觉得本文对你有帮助,不妨点赞收藏起来把,说不定下次要用就找不到了呢。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/440137
推荐阅读
相关标签
  

闽ICP备14008679号