-
转换成集合
查看全部 -
转换成列表:stream.collect(Collectors.toList());
注意需要进行一次强制类型转换
查看全部 -
stream对象一旦被关闭,其内部就不在有数据了,不能在对其做任何操作了
toArray是结束操作符
查看全部 -
转化为字符串
stream.collect(Collectors.joining).toString()
查看全部 -
Stream对象 --> 转换得到其他类型
转为数组类型
stream.toArray()
stream.toArray(String[]::new) // 方法引入的方式
查看全部 -
Stream对象对于基本数据类型的功能封装:目前支持了int/long/double类型的底层优化
IntStream.of(new int[] {10,20,30}).forEach(System.out::println)
IntStream.range(1,5).forEach(System.out::println) //包含1 不包含5
IntStream.rangeClosed(1,5).forEach(System.out::println) //包含1 也包含5
查看全部 -
Map转化为Stream的方式
通过map对象的.entrySet().stream() 得到Stream对象
查看全部 -
列表和集合转换为Stream的方式
列表或集合对象的.stream()方法即可返回Stream对象
查看全部 -
批量数据对象(包含各种形式) 转换为Stream对象
多个数据转换Stream
Stream Stream = Stream.of("A","B","C")
数组
String [] strArrays = new String[]{"A","B","C"}
Stream stream = Arrays.stream(strArrays)
查看全部 -
操作集合元素-类型转换:
其他类型(创建、获取)->Stream对象
Stream 对象-> 其他类型
常见API操作
查看全部 -
终结操作:短路操作->当前的Stream对象在处理过程中,一旦满足某个条件,就可以得到结果
包括: anyMatch/AllMatch/noneMatch/findfirst/findAny等
short-circuiting : 在无限大的stream 中返回有限大的stream 需要包含短路操作是有必要的
查看全部 -
终结操作:非短路操作->当前的Stream对象必须处理完集合中所有的数据,才能得到处理结果
包括:forEach/forEachOrdered/toArray/reduce/collect/min/max/count/iterator等等
查看全部 -
终结操作|结束操作{Terminal}:一个steam对象只能有一个中间操作。
这个操作不可逆,一旦发生,就会真实处理数据生成对应结果
查看全部 -
中间操作:
操作结果是一个Stream对象,所以中间操作可有一个或多个连续的中间操作,需要注意的是中间操作只记录操作方式,不做具体执行,直到结束操作发生时,才做数据的最终执行。
中间操作就是业务逻辑处理,操作过程分为有状态和无状态
无状态中间操作:即处理数据时,不收前置中间操作的影响
包括: map/filter/peek/parallel/sequential/unordered
有状态中间操作:即处理数据时,受前置中间操作的影响
包括:distinct/sorted/limit/skip
查看全部 -
1.聚合操作:
2.Stream的处理流程
数据源
数据转换[可一到多次转换]
获取结果
3. 获取Stream对象
a.从集合中或者数组中获取
Collection.stream() 如:list.stream()
Collection.paralletStream() 获取集合的支持并发处理的stream对象
从数组中获取stream对象的方法
Arrays.stream(数组对象)
b.从BufferReader缓冲流中获取stream对象
BufferReader.lines() -> stream()
c. 通过静态工厂方法
java.util.stream.IntStream.range() 直接获取stream对象
java.nio.file.Files.walk()
d.自行构建
java.util.Spliterator
e.其他方法
如 Random.ints() / Pattern.splitAsStream()
查看全部
举报