Stream 流之 sorted
一、方法概述
如果需要对流中数据进行排序,可以使用 sorted 方法
Stream<T> sorted(): 根据元素的自然顺序排序
Stream<T> sorted(Comparator<? super T> comparator): 根据比较器指定的规则排序
二、案例
1、使用自然排序
sorted()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class StreamDemo { public static void main(String[] args) { List<Person> personList = Arrays.asList( new Person( 1 , "大毛" , 30 , 175 ), new Person( 2 , "二毛" , 25 , 170 ), new Person( 3 , "三毛" , 25 , 170 ), new Person( 4 , "小毛" , 20 , 163 )); // 获取 person 类型流 Stream<Person> personStream = personList.stream(); // 将 person 类型流转换成 age 类型流 Stream<Integer> ageStream = personStream.map((item) -> item.getAge()); // 对 age 类型流进行自然排序 Stream<Integer> sortedStream = ageStream.sorted(); // 遍历新流 sortedStream 中的元素 sortedStream.forEach(System.out::println); } } |
2、定制排序
sorted(Comparator<? super T> comparator)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class StreamDemo { public static void main(String[] args) { List<Person> personList = Arrays.asList( new Person( 1 , "大毛" , 30 , 175 ), new Person( 2 , "二毛" , 25 , 170 ), new Person( 3 , "三毛" , 25 , 170 ), new Person( 4 , "小毛" , 20 , 163 )); // 获取 person 类型流 Stream<Person> personStream = personList.stream(); // 将 person 类型流转换成 age 类型流 Stream<Integer> ageStream = personStream.map((item) -> item.getAge()); // 对 age 类型流进行定制排序 // 定制排序需要实现 Comparator<? super T> comparator 接口,该接口有一个抽象方法 // int compare(T o1, T o2),如果 o1-o2 代表正序排序,o2-o1 代表倒序排序 Stream<Integer> sortedStream = ageStream.sorted(((o1, o2) -> o2-o1)); // 遍历新流 sortedStream 中的元素 sortedStream.forEach(System.out::println); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?