ArrayList是有序的吗?
是的,ArrayList在java中是有序的,其内部
ArrayList本身不具备内置的排序功能,但可以通过java提供的Collections.sort()方法或者java8及以后版本引入的Stream API来进行排序
以下是几种对ArrayList排序的方法:
1.使用Collections.sort()方法配合Comparable接口:如果ArrayList中元素实现了comparable接口(比如Integer,String等已经实现了Comparable的类型),可以直接调用:
2.使用Collections.sort()方法配合Comparator接口:当需要自定义排序规则时,可以创建一个Comparator实现类,并将其作为参数传给Collections.sort()方法
3.使用List的sort()方法(java8以上的版本):java8引入了Lambda表达式和StreamAPI,可以直接在ArrayList上调用sort()方法,并传递一个Comparator
4.使用StreamAPI进行排序(java8以上的版本)
package a_od_test;
import java.util.*;
import java.util.stream.Collectors;
/*
ArrayList是有序的吗?
是的,ArrayList在java中是有序的,其内部
ArrayList本身不具备内置的排序功能,但可以通过java提供的Collections.sort()方法或者java8及以后版本引入的Stream API来进行排序
以下是几种对ArrayList排序的方法:
1.使用Collections.sort()方法配合Comparable接口:如果ArrayList中元素实现了comparable接口(比如Integer,String等已经实现了Comparable的类型),可以直接调用:
2.使用Collections.sort()方法配合Comparator接口:当需要自定义排序规则时,可以创建一个Comparator实现类,并将其作为参数传给Collections.sort()方法
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 o1.name.compareTo(o2.name);
//按年龄排序
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);
// students.sort(Comparator.comparing(student -> student.name));
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 = students.stream().sorted(Comparator.comparing(student -> student.name)).collect(Collectors.toList());
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 +
'}';
}
}
标签:name,students,ArrayList,几种,Student,排序,age
From: https://blog.csdn.net/weixin_45547818/article/details/137524509