标签:要求 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天资不错。从一开始,它就是一门精心设计的面向对象的语言,提供了大量有用的库。由于线程和锁,他天生就支持小规模的并发。--
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 求和如此简单
乘
换一个:+
最大值,当然也有最小值
拼个字符串玩
随机生成数字 如此简单
偶数
等有时间继续 - (*?ω?)
@
标签:要求 htm 生态 发布 list() 最大 迭代 sorted 操作
原文地址:https://www.cnblogs.com/DarGi2019/p/12875707.html