当前位置:首页 > Java

java如何给列表排序

2026-03-18 20:12:14Java

使用 Collections.sort() 方法

对于 List 接口的实现类(如 ArrayListLinkedList),可以使用 Collections.sort() 方法进行排序。该方法会修改原始列表的顺序。

import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(9);

Collections.sort(numbers); // 升序排序
System.out.println(numbers); // 输出 [2, 5, 9]

使用 List.sort() 方法

Java 8 及以上版本可以直接调用 Listsort() 方法,传入一个 Comparator

List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(9);

numbers.sort(Comparator.naturalOrder()); // 升序排序
System.out.println(numbers); // 输出 [2, 5, 9]

numbers.sort(Comparator.reverseOrder()); // 降序排序
System.out.println(numbers); // 输出 [9, 5, 2]

自定义排序规则

如果需要根据对象的某个属性排序,可以通过自定义 Comparator 实现。

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
people.add(new Person("Charlie", 35));

// 按年龄升序排序
people.sort(Comparator.comparingInt(p -> p.age));
System.out.println(people.get(0).name); // 输出 Bob

// 按年龄降序排序
people.sort((p1, p2) -> p2.age - p1.age);
System.out.println(people.get(0).name); // 输出 Charlie

使用 Stream.sorted() 方法

如果希望排序后生成一个新列表而不修改原列表,可以使用 Streamsorted() 方法。

List<Integer> numbers = new ArrayList<>();
numbers.add(5);
numbers.add(2);
numbers.add(9);

List<Integer> sortedNumbers = numbers.stream()
    .sorted()
    .toList(); // Java 16+ 的 toList(),或使用 .collect(Collectors.toList())

System.out.println(sortedNumbers); // 输出 [2, 5, 9]
System.out.println(numbers); // 原列表不变,输出 [5, 2, 9]

对字符串列表排序

字符串列表的排序默认按字典序(字母顺序)排列。

java如何给列表排序

List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");

Collections.sort(names);
System.out.println(names); // 输出 [Alice, Bob, Charlie]

注意事项

  • 对于自定义对象,需要实现 Comparable 接口或提供 Comparator
  • 排序的时间复杂度通常为 O(n log n),具体取决于排序算法(如 Collections.sort() 使用归并排序)。

标签: 列表java
分享给朋友:

相关文章

vue实现列表添加

vue实现列表添加

使用 Vue 实现列表添加功能 数据绑定与列表渲染 在 Vue 中,通过 v-for 指令可以轻松实现列表渲染。首先需要定义一个数组来存储列表数据,并在模板中使用 v-for 循环渲染。 <t…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表功能 在 Vue 中实现搜索列表功能通常需要以下几个关键步骤: 数据绑定与列表渲染 使用 v-model 绑定搜索输入框,监听用户输入。通过 v-for 指令渲染过滤后的列表数据…