1. Java8 List排序基础入门
对于Java开发者来说,List排序是最基础但也是最常用的操作之一。Java8引入的List.sort()方法相比传统的Collections.sort()提供了更简洁、更函数式的编程体验。我们先来看一个最简单的例子:
java复制List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);
numbers.sort(Comparator.naturalOrder());
System.out.println(numbers); // 输出 [1, 1, 3, 4, 5, 9]
这个例子展示了最基本的自然排序(升序排列)。Comparator.naturalOrder()是Java8提供的一个便捷方法,它返回一个按照自然顺序比较的Comparator。对于Integer类型来说,自然顺序就是数字从小到大排列。
注意:List.sort()方法会直接修改原List,而不是返回一个新的排序后的List。这与Stream API的sorted()操作不同,需要特别注意。
1.1 排序方法对比
在Java8之前,我们通常使用Collections.sort()来对List进行排序:
java复制Collections.sort(numbers); // 传统方式
这两种方式在功能上是等价的,但List.sort()有以下几个优势:
- 更符合面向对象的设计理念(操作属于List自身)
- 方法签名更简洁
- 与Java8的函数式风格更契合
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 常用排序方式详解
2.1 基本数据类型排序
对于基本数据类型的包装类(Integer、Long、Double等),排序非常简单:
java复制List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9);
// 升序排序
numbers.sort(Comparator.naturalOrder());
// 降序排序
numbers.sort(Comparator.reverseOrder());
2.2 字符串排序
字符串排序遵循字典序(lexicographical order):
java复制List<String> words = Arrays.asList("banana", "apple", "pear", "orange");
// 自然排序(字典序)
words.sort(Comparator.naturalOrder());
// 忽略大小写排序
words.sort(String.CASE_INSENSITIVE_ORDER);
// 按字符串长度排序
words.sort(Comparator.comparingInt(String::length));
2.3 自定义对象排序
实际开发中最常见的是对自定义对象的排序。假设我们有一个Person类:
java复制class Perso
