Java 1.8 Stream 流 Sorted 排序
一则或许对你有用的小广告
最近,小哈正在带小伙伴们做前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.2 + Vite 4
,手把手,前端 + 后端,全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已进入第七章 《文章分类模块开发》中,截止到目前,已更新 105150 字,69 篇内容,讲解图:521 张,还在持续爆肝中,后续还会上新更多项目,已有 200+ 小伙伴加入,欢迎点击围观。
在 Java 1.8 中,Stream API 提供了 sorted()
方法用于对流中的元素进行排序。sorted()
方法可以根据元素的自然顺序(如果元素实现了 Comparable
接口)或者根据指定的比较器进行排序。
本小节将深入介绍 Java 1.8 中的 Stream 的 sorted()
方法,并通过示例代码演示如何使用它。
sorted() 方法概览
在 Stream API 中,sorted()
方法用于对流中的元素进行排序。
Stream<T> sorted()
Stream<T> sorted(Comparator<? super T> comparator)
sorted()
方法使用元素的自然顺序进行排序。sorted(Comparator<? super T> comparator)
方法使用指定的比较器进行排序。
使用 sorted() 方法
让我们通过几个示例来说明如何使用 sorted()
方法。
示例 1:对整数列表进行升序排序
List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 3);
// 使用 sorted() 方法对整数列表进行升序排序
List<Integer> sortedNumbers = numbers.stream()
.sorted()
.collect(Collectors.toList());
System.out.println("Sorted numbers: " + sortedNumbers); // 输出 "Sorted numbers: [1, 2, 3, 5, 8]"
在这个例子中,我们首先创建一个整数列表 numbers
。然后,我们使用 stream()
方法将列表转换为 Stream 对象,再使用 sorted()
方法对整数列表进行升序排序,并将排序结果转换为新的列表。
示例 2:对自定义对象列表按年龄进行降序排序
class Person {
private String name;
private int age;
// 构造函数、Getter 和 Setter 方法
// toString() 方法
}
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Charlie", 22)
);
// 使用 sorted() 方法按年龄进行降序排序
List<Person> sortedPeople = people.stream()
.sorted(Comparator.comparingInt(Person::getAge).reversed())
.collect(Collectors.toList());
System.out.println("Sorted people: " + sortedPeople);
在这个例子中,我们首先创建一个自定义对象列表 people
,其中包含了三个 Person 对象。然后,我们使用 stream()
方法将列表转换为 Stream 对象,再使用 sorted()
方法按年龄进行降序排序,并将排序结果转换为新的列表。
示例 3:对字符串列表按长度进行排序
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "grape");
// 使用 sorted() 方法按字符串长度进行排序
List<String> sortedWords = words.stream()
.sorted(Comparator.comparing(String::length))
.collect(Collectors.toList());
System.out.println("Sorted words: " + sortedWords); // 输出 "Sorted words: [date, grape, apple, cherry, banana]"
在这个例子中,我们首先创建一个字符串列表 words
。然后,我们使用 stream()
方法将列表转换为 Stream 对象,再使用 sorted()
方法按字符串长度进行排序,并将排序结果转换为新的列表。
自定义排序顺序
你也可以使用自定义的比较器来对元素进行排序。比较器可以根据你的需求制定特定的排序规则。
例如,如果你想按照某个属性的逆序进行排序,可以使用 Comparator.comparing()
方法,并使用 reversed()
方法反转排序顺序。
总结
Java 1.8 中的 Stream API 提供了 sorted()
方法,用于对流中的元素进行排序。你可以使用默认的自然顺序,也可以使用自定义的比较器来实现不同的排序方式。