ArrayList排序几种方法

时间:2025-03-05 14:58:26
package a_od_test; import java.util.*; import java.util.stream.Collectors; /* ArrayList是有序的吗? 是的,ArrayList在java中是有序的,其内部 ArrayList本身不具备内置的排序功能,但可以通过java提供的()方法或者java8及以后版本引入的Stream API来进行排序 以下是几种对ArrayList排序的方法: 1.使用()方法配合Comparable接口:如果ArrayList中元素实现了comparable接口(比如Integer,String等已经实现了Comparable的类型),可以直接调用: 2.使用()方法配合Comparator接口:当需要自定义排序规则时,可以创建一个Comparator实现类,并将其作为参数传给()方法 3.使用List的sort()方法(java8以上的版本):java8引入了Lambda表达式和StreamAPI,可以直接在ArrayList上调用sort()方法,并传递一个Comparator 4.使用StreamAPI进行排序(java8以上的版本) */ public class Main27_ArrayList_sort { public static void main(String[] args) { // sort1(); // sort2(); // sort3(); sort4(); } //方法1 public static void sort1() { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(3); list.add(5); list.add(4); list.add(2); //[1, 3, 5, 4, 2] System.out.println("排序前: " + list); Collections.sort(list); //[1, 2, 3, 4, 5] System.out.println("排序前: " + list); } //方法2 public static void sort2() { ArrayList<Student> students = new ArrayList<>(); students.add(new Student("zs", 16)); students.add(new Student("ls", 19)); students.add(new Student("ww", 15)); // 排序前: [Student{name='zs', age=16}, Student{name='ls', age=19}, Student{name='ww', age=15}] System.out.println("排序前: " + students); Collections.sort(students, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { //按姓名排序 // return (); //按年龄排序 return Integer.compare(o1.age, o2.age); } }); // 排序后: [Student{name='ls', age=19}, Student{name='ww', age=15}, Student{name='zs', age=16}] System.out.println("排序后: " + students); } //方法3 public static void sort3() { ArrayList<Student> students = new ArrayList<>(); students.add(new Student("zs", 16)); students.add(new Student("ls", 19)); students.add(new Student("ww", 15)); // 排序前: [Student{name='zs', age=16}, Student{name='ls', age=19}, Student{name='ww', age=15}] System.out.println("排序前: " + students); // ((student -> )); students.sort(Comparator.comparing(student -> student.age)); System.out.println("排序后: " + students); } //方法4 public static void sort4() { ArrayList<Student> students = new ArrayList<>(); students.add(new Student("zs", 16)); students.add(new Student("ls", 19)); students.add(new Student("ww", 15)); // 排序前: [Student{name='zs', age=16}, Student{name='ls', age=19}, Student{name='ww', age=15}] System.out.println("排序前: " + students); // List<Student> newStudents = ().sorted((student -> )).collect(()); List<Student> newStudents = students.stream().sorted(Comparator.comparing(student -> student.age)).collect(Collectors.toList()); System.out.println("排序后: " + newStudents); } } class Student { String name; int age; //构造函数, getter, setter... public Student(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }