首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java8流的简单梳理

关键词:

Java8 Stream,操作符,内部迭代

集合与流的关系

集合是数据结构,主要目的是以特定的时间/空间复杂度存储和访问元素;流的目的在于表达计算

集合包含整个数据结构,是一个内存中的数据结构,它包含的数据结构中目前所有的值。集合中的每个元素都得先计算出来才能添加/删除到集合中,元素都得先算出来才能成为集合的一部分。

流在概念上是固定的数据结构,其元素按需计算的,按需生成。流就像是一个延迟创建的集合,只有在消费者要求的时候才会有计算值。

Stream库的内部迭代可以自动选择一种适合你硬件的数据表示和并行实现。

流的创新点

只遍历一次

外部迭代变成了内部迭代,遍历的操作被封装到了流的类库里,向外暴露的是循环遍历中对元素的操作

各操作符

1. 按使用位置划分

中间操作:

skip,limit, filter, distinct, map, flatMap,sorted...

终端操作:

count, collection, foreach

匹配:anyMatch, allMatch, noneMatch短路操作,找到结果就返回

查找:findAny, findFirst, reduce

当调用终端操作时,流的遍历才真正开始

2. 按状态划分

有状态操作:比如reduce,sorted,distinct

无状态操作:比如map,filter

原始类型流特化1. 映射到数值流

mapToInt, mapToDouble, mapToLong

2. 转换回对象流

boxed, mapToObj

创建流的几种方式由值创建流

Stream.of

由数组创建流

Array.stream()

由文件创建流

Files.lines() 返回文件中的各行构成的字符串流

由函数生成流&无限流

Stream.iterate() 根据函数生成一系列值

Stream.generate

收集器

提供三大功能:

将元素归约和汇总为一个值

元素分组

元素分区

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180212G07B2000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券