码迷,mamicode.com
首页 > 编程语言 > 详细

跟上Java的脚步(一) Stream -(8)待完成

时间:2020-06-09 16:47:28      阅读:47      评论:0      收藏:0      [点我收藏+]

标签:要求   htm   生态   发布   list()   最大   迭代   sorted   操作   

编程语言就像生态系统一样,新的语言会出现,旧语言则被取代,除非它们不断演变。所以Java 也在不断地变化。

  Java 8于2014年3月发布.Java 9于2017年9月发布.

  Java 10于2018年3月发布.Java 11于2018年9月发布,

  Java 12 于2019年3月19日发布.Java 13于 2019年9月17日发布. Java 14 于2020年3月17日 发布

  这些改变会让编程更容易,我们再也不用编写啰唆的语句了。

-- Java天资不错。从一开始,它就是一门精心设计的面向对象的语言,提供了大量有用的库。由于线程和锁,他天生就支持小规模的并发。--

Stream(jdk8)

  Java 8的主要好处在于它提供了更多的编程工具和概念,能以更快、更简洁、更易于维护的方式解决新的或现有的编程问题。

  流处理 java.util.stream  Stream<T> 是一个比较花哨的迭代器。是一个延迟创建的集合。

    就像汽车组装流水线一样,汽车排队进入加工站,每个加工站会接收、修改汽车,然后将之传递给下一站做进一步的处理。

    尽管流水线实际上是一个序列,但不同加工站的运行一般是并行的。

    Java 8可以拿到几个CPU核,分别执行你的Stream操作流水线——这是几乎免费的并行,用不着去费劲搞Thread了

  优点:简单易懂 灵活 性能好!

  举个栗子: 取价格<400 然后 按价格排序 最后返回list; 就像一个流水线 且代码清晰可读;

 技术图片

   上代码:

List<Menu> resultList=
                menuList.stream()
                        .filter(d -> d.getPrice()<400)
                        .sorted(comparing(Menu::getPrice))
                        .collect(Collectors.toList());

   除此Stream 还可以做分组 去重 之前写过 集合相关笔记 - https://www.cnblogs.com/DarGi2019/p/11583624.html

   遍历流:看上面的代码可以看出:其实Stream已经帮我们做好了迭代的工作,只要告诉他去做什么就可以了。如果想遍历 用 forEach循环内部成员 。

技术图片

 menuList.stream().forEach(System.out::println);

 开始学习怎样使用: 

  三要素:

    1.数据源-如list 

    2.中间操作-流水线 如 filter map limit sorted distinct

    3.终端操作 如 .collect(Collectors.toList()); .count(); forEach 之类的

 除了filter 在JDK9中新增了 takeWhile 和 dropWhile 

   看一下他们的区别: takeWhile 在没有西瓜! 而 dropWhile 是它的取反!

技术图片

   .skip(1) 略过

技术图片

 接收数组Arrays.stream(arr) 直接创建Stream.of(1,10,100) 创建空流Stream.empty();

 流的扁平化:flatMap

技术图片

 是否存在 anyMatch 当然也有:全符合要求 allMatch ,与之相反没有一个符合:noneMatch 而且他们都是短路的~

 技术图片

 返回一个符合条件的:findAny 随便 ,findFirst 第一个

技术图片

   遇到reduce 求和如此简单

技术图片

 乘

技术图片

换一个:+

技术图片

最大值,当然也有最小值

 技术图片

 拼个字符串玩

技术图片

数值流:IntStream

 随机生成数字 如此简单 

技术图片

 

 偶数

技术图片

 

等有时间继续 - (*?ω?) 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

@

跟上Java的脚步(一) Stream -(8)待完成

标签:要求   htm   生态   发布   list()   最大   迭代   sorted   操作   

原文地址:https://www.cnblogs.com/DarGi2019/p/12875707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!