课程名称:一课掌握Lambda表达式语法及应用
课程章节:第四章第二节
主讲老师:大牧莫邪
课程内容:
今天主要学了一Lambda中的Stream的流的使用和注意的地方
6:Stream概述
public class Test2 {
public static void main(String[] args) {
List<String> accounts = new ArrayList<>();
accounts.add("shubei");
accounts.add("hh");
accounts.add("beitah");
//1.1:业务要求,长度大于等于5的有效账号
for (String account : accounts) {
if(account.length() >= 5){
System.out.println("有效账号是" + account);
}
}
//1.2:迭代方式
Iterator<String> it = accounts.iterator();
while(it.hasNext()){
String account = it.next();
if(account.length() >= 5){
System.out.println("有效账号是:" + account);
}
}
//1.3:stream结合lambda方式,完成业务处理
List validList = accounts.stream().filter(s -> s.length() >= 5).collect(Collectors.toList());
System.out.println(validList);
}
}
7:Stram API
/**
* 1:聚合操作
*
* 2:stream的处理流程
* 数据源
* 数据转换
* 获取结果
*
* 3:获取Stream对象
* 1:从集合或者数组中获取
* Collection.stream(),如account.stream()
* Collection.parallelStream() 获取一个支持并发的Stream对象
* Arrays.stream(T t)
* 2:BufferReader
* BufferRader.lines() -> stream()
* 3:静态工厂
* java.util.stream.IntStream.range()
* java.nio.file.Files.walk()
* 4:自动构建
* java.util.Spliterator
* 5:更多的方式
* Random.ints()
* Pattren.splitAsStream()
* 4:中间操作API
* 中间操作是一个Stream,中间操作可以是一个或者多个的中间操作,需要注意的是,
* 中间操作只记录操作方式,不做具体执行,知道结束操作发生时,才做数据的最终执行
* 中间操作,就是业务逻辑处理
* 中间操作过程:无状态:数据处理时,不受前置中间操作的影响
* map/fiter/peek/parallel/sequential/unordered
* 有状态:数据处理时,受前置中间操作的影响
* distinct/sorted/limit/skip
* 5:终结操作/结束操作
* 需要注意:一个Stream对象,只能有一个终结操作,这个操作一旦发生,就会真实处理数据,生成对应数据。
* 终结操作:非短路操作:当前的Stream对象必须处理完集合中所有数据,才能得到处理结果。
* forEach/forEachOrdered/toArrav/reduce/collect/min/max/count/iterator
* 短路操作:当前的stream对象在处理过程中,一旦满足某个条件,就可以得到结果。
* anyMatch/allMatch/noneMatch/findFirst/findAny等
* Short-circuiting,无限大的stream->有限大的stream
*
*/
课程收获:
看看这记的东西,看看这记的,这只剩下记的东西了,因为脑子记不住,Lambda的Stream流对于初学者还是同样的不友好啊,什么迭代一类的,之前根本完全不知道,这才知道,还是继续整吧,其次,学这门课,必须手眼并动,手不仅得记,还得按暂定,跟着老师的原始速度就有点跟不上,更不要说开倍速了,开倍速就等于过家家了
加油吧,同志们!
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦