Java中集合和数组的排序方式小结
数组排序
Java中可以使用Arrays类提供的sort()方法对数组进行排序。sort()方法有两个重载版本:
sort(int[] a)
:对int类型的数组进行升序排序
sort(Object[] a)
:对实现了Comparable接口的对象数组进行升序排序
示例1:对int类型的数组进行升序排序
int[] arr = {3, 1, 7, 2, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3, 5, 7]
示例2:对包含自定义类的对象数组进行升序排序
class Student implements Comparable<Student> {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public int compareTo(Student student) { // 重写compareTo方法
return this.id - student.getId();
}
}
Student[] students = {
new Student(3, "Tom"),
new Student(1, "Bob"),
new Student(2, "Alice"),
new Student(4, "John"),
new Student(5, "Mike")
};
Arrays.sort(students);
for (Student stu : students) { // 遍历输出
System.out.println(stu.getId() + " " + stu.getName());
}
上述代码中自定义了一个Student类,实现了Comparable接口,并重写了compareTo()方法。在排序时,会根据compareTo方法的返回值进行比较和排序。
集合排序
Java中可以使用Collections类提供的sort()方法对集合进行排序。sort()方法有一个重载版本:
sort(List<T> list)
:对实现了Comparable接口的对象集合进行升序排序
示例1:对包含自定义类的对象集合进行升序排序
List<Student> students = new ArrayList<>();
students.add(new Student(3, "Tom"));
students.add(new Student(1, "Bob"));
students.add(new Student(2, "Alice"));
students.add(new Student(4, "John"));
students.add(new Student(5, "Mike"));
Collections.sort(students);
for (Student stu : students) { // 遍历输出
System.out.println(stu.getId() + " " + stu.getName());
}
上述代码中使用List接口的实现类ArrayList来存储Student类型的对象,然后使用Collections类的sort()方法进行排序,排序时会自动调用compareTo方法进行比较和排序。
自定义排序方式
如果需要按照其他方式进行排序,可以使用Comparator接口来自定义排序方式。Comparator接口有一个compare()方法来实现自定义排序方式,sort()方法也有一个重载版本接收一个Comparator实现。
示例2:按照姓名进行降序排序
List<Student> students = new ArrayList<>();
students.add(new Student(3, "Tom"));
students.add(new Student(1, "Bob"));
students.add(new Student(2, "Alice"));
students.add(new Student(4, "John"));
students.add(new Student(5, "Mike"));
Comparator<Student> comparator = new Comparator<Student>() { // 自定义排序方式
@Override
public int compare(Student student1, Student student2) {
return student2.getName().compareTo(student1.getName()); // 按照姓名进行降序排序
}
};
Collections.sort(students, comparator);
for (Student stu : students) { // 遍历输出
System.out.println(stu.getId() + " " + stu.getName());
}
上述代码中创建了一个Comparator接口的匿名实现来自定义排序方式,按照姓名进行降序排序。然后在sort()方法里传入comparator实现来进行排序。
小结
Java中可以使用Arrays类和Collections类的sort()方法对数组和集合进行升序排序。如果需要按照自定义方式进行排序,可以实现Comparable接口或使用Comparator接口来自定义排序方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中集合和数组的排序方式小结 - Python技术站