Stream通道流支持两种排序方式:sorted()自然排序;sorted(Comparator comp)。

sorted()自然排序:产生一个新流,流中每个序列按自然排序的方式进行排序。

sorted(Comparator comp):产生一个新流,流中的每个序列按自定义的比较器排序进行排序

一、sorted()

public static void main(String[] args) throws InterruptedException {List<String> list1 = new ArrayList<>();list1.add("2");list1.add("1");list1.add("3");Stream<String> stream1 = list1.stream().sorted();stream1.forEach(p -> System.out.println(p));}

输出结果:

1
2
3

二、sorted(Comparator comp)

public static void main(String[] args) throws InterruptedException {List<Order> list = new ArrayList<>();Order order1 = new Order(LocalDateTime.now(), 1);Thread.sleep(2000);Order order2 = new Order(LocalDateTime.now(), 2);Thread.sleep(2000);Order order3 = new Order(LocalDateTime.now(), 3);Thread.sleep(2000);Order order4 = new Order(LocalDateTime.now(), 4);list.add(order2);list.add(order1);list.add(order3);list.add(order4);Stream<Order> stream = list.stream().sorted((o1, o2) -> {if (o1.getOrderTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - o2.getOrderTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() >= 0) {return o1.getOrderTime().compareTo(o2.getOrderTime());} else {return o1.getOrderTime().compareTo(o2.getOrderTime());}});stream.forEach(p -> System.out.println(p));}

输出结果:

Order{orderTime=2018-08-09T15:59:28.458, orderId=1}
Order{orderTime=2018-08-09T15:59:30.460, orderId=2}
Order{orderTime=2018-08-09T15:59:32.461, orderId=3}
Order{orderTime=2018-08-09T15:59:34.461, orderId=4}

获取排序的第一个元素

public static void main(String[] args) throws InterruptedException {List<Order> list = new ArrayList<>();Order order1 = new Order(LocalDateTime.now(), 1);Thread.sleep(2000);Order order2 = new Order(LocalDateTime.now(), 2);Thread.sleep(2000);Order order3 = new Order(LocalDateTime.now(), 3);Thread.sleep(2000);Order order4 = new Order(LocalDateTime.now(), 4);list.add(order2);list.add(order1);list.add(order3);list.add(order4);Stream<Order> stream = list.stream().sorted((o1, o2) -> {if (o1.getOrderTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - o2.getOrderTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() >= 0) {return o1.getOrderTime().compareTo(o2.getOrderTime());} else {return o1.getOrderTime().compareTo(o2.getOrderTime());}});Optional<Order> first = stream.findFirst();System.out.println(first);Order order = first.get();System.out.println(order);}

输出结果:

Optional[Order{orderTime=2018-08-09T16:47:26.415, orderId=1}]
Order{orderTime=2018-08-09T16:47:26.415, orderId=1}

Steam流应用--排序相关推荐

  1. Steam流排序去重

    Steam流排序去重 1.工作中我们经常会遇到排序去重问题,传统做法就是拿到数组遍历然后去重,现在我们可以使用Stream流来快速帮我们解决去重排序问题: class Student{private ...

  2. 记录Java Steam流的一些用法

    基础示例类: Use.java public class User {private String userId;private String userName;private Integer age ...

  3. java中steam流的使用

    (1)数组合并 : 原始合并 定义俩个集合合并为一个集合 例子: public class 测试 {/*** 把小王合道* list中* */public static void main(Strin ...

  4. Java中Steam流的用法及使用备忘

    文章目录 Java中Steam流的用法及使用备忘 一. 流的常用创建方法 1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays ...

  5. 使用java Steam流进行逻辑分页(内存分页)

    物理分页与逻辑分页 物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结 ...

  6. Java8新特性之Steam流详解

    流的操作包含如下三个部分:创建流.中间流.关闭流,筛选.去重.映射.排序属于流的中间操作,收集属于终止操作.Stream是流操作的基础关键类. 一.创建流 (1)通过集合创建流 // 通过集合创建流 ...

  7. 可变参数和Steam流的基本使用

    1.可变参数 2.不可变集合 3. Steam流 3.1 对象流化 3.2 操作流的方法 3.3 收集方法 1.可变参数 内容是比较简单的,就介绍一下如何使用吧 public static void ...

  8. java Steam流的用法

    java Steam流的用法1 java Steam流的用法2 项目中的流用法不太懂,沾出来大家一路分享,有清楚地可以评论留言.

  9. Steam流的常用操作

    steam流 Java求差集 摒弃掉数据库操作,使用内存去完成IO完成的事情. /*** 差集(基于java8新特性)优化解法2* 求List1中有的但是List2中没有的元素*/ private L ...

最新文章

  1. 邁向IT專家成功之路的三十則鐵律 鐵律六:求全求盈之道-佈施
  2. 描述一下普适计算时代中的计算机,《课程总结报告-普适计算及其应用》.doc
  3. android左右旋转动画效果图,Android新姿势:3D翻转效果原理
  4. idea 使用sonarlint报错解决方案
  5. fov视场角计算_图像传感器集成计算功能,赋能机器视觉技术
  6. 一个独立程序员对自己近九个月工作生活的回顾
  7. devstack安装openstack
  8. Partition List -- LeetCode
  9. php怎么处理一对多,php - 如何处理内部连接以及与OOP的一对多关系? - SO中文参考 - www.soinside.com...
  10. 二维条码和射频识别技术在仓储物流系统中的应用
  11. 【硬见小百科】数字电子时钟电路图设计原理
  12. 三十岁,研究生毕业的你,现在收入多少?
  13. Mr.Go 会客厅第二期,B站+斗鱼“后浪” Gopher 火花四溅!
  14. php中获得上个月的同一时间,PHP判断两个给定日期是否在同一周的方法
  15. iOS 【使用自定义字体-苹方字体】
  16. Glyphs 3 for Mac字体设计编辑工具
  17. 前端入门之(我与iscroll的不期而遇)
  18. HTML绘制七巧板,如何使用HTML5 CSS3制作简单七巧板
  19. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(以第十次为例)
  20. 简单的数学题 - 数论

热门文章

  1. 剑侠情缘微信539服务器,《新剑侠情缘》1月15日版本更新开服公告
  2. UA SIE545 优化理论基础1 例题4 证明一个集合是闭集
  3. 多元函数第五:拓扑初步(1):开集,闭集,内部,边界,外部
  4. FSMC知识详解,以及驱动TFTLCD原理
  5. 【软考必背】100条知识点复习提纲,高频考点必须拿下!
  6. ppt模板怎么统一添加动画效果?
  7. 苹果手机怎么设置闹钟铃声?更改为歌曲铃声,亲测有效
  8. python打造seo必备工具-自动查询排名
  9. android 微信支付问题总结
  10. “元宇宙618购物节”?除了优惠和虚拟代言人,还有更多神奇