查看“核心技术Ⅱ:流”的源代码
←
核心技术Ⅱ:流
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:JavaCore]] == 关于 Java SE 8 的流库 == <pre> Stream它并不是一个容器,它只是对容器的功能进行了增强,添加了很多便利的操作,例如查找、过滤、分组、排序等一系列的操作。 并且有串行、并行两种执行模式,并行模式充分的利用了多核处理器的优势,使用fork/join框架进行了任务拆分,同时提高了执行速度。 简而言之,Stream就是提供了一种高效且易于使用的处理数据的方式。 </pre> 流提供了一种在比集合更高的概念级别上指定计算的数据视图,以“做什么而非怎么做”的方式处理集合。 === 从迭代到流的操作 === 处理集合时,通常会迭代遍历它的元素,并在每个元素上执行某项操作: <syntaxhighlight lang="java"> String contents = new String(Files.readAllBytes(Paths.get("alice.txt")), Standard(harsets,UTF_8); // Read file into string List<String> words= Arrays.aslist(contents.split("\\PL+")); // Split into words; nonletters are delimiters long count = O; for (String w : words) { if (w. length() > 12) count++; } </syntaxhighlight> 使用流时,相同的操作看起来像下面这样: <syntaxhighlight lang="java"> 1ong count = words. stream().filter(w -> w.length() > 12).count(); </syntaxhighlight> * 仅将s tream 修改为parallel Stream 就可以让流库以并行方式来执行过滤和计数: <syntaxhighlight lang="java"> 1ong count = words.parallelStream().filter(w -> w.length() > 12).count(); </syntaxhighlight> === 流与集合 === 流表面上活起来和集合很类似,都可以让我们转换和获取数据。但是,它们之间存在着显著的差异: # 流并不存储其元素。 #: 这些元素可能存储在底层的栠合中,或者是按需生成的。 # 流的操作不会修改其数据源。 #: 例如,filter 方法不会从新的流中移除元素,而是会生成一个新的流,其中不包含被过滤掉的元素。 # 流的操作是尽可能惰性执行的。这意味若直至需要其结果时,操作才会执行。 #: 例如,如果我们只想查找前5 个长单词而不是所有长单词,那么filter 方法就会在匹配到第5 个单词后停止过滤。因此,我们甚至可以操作无限流。 === 相关方法 === java.util.stream.Stream<T> 8 * Stream<T> filter(Predicate<? super T> p) *: 产生一个流,其中包含当前流中满足P 的所有元索。 * 1ong count() *: 产生当前流中元素的数批。这是一个终止操作。 java.util.Collection<E> 1.2 * default Stream<E> stream() * default Stream<E> parallel Stream() *: 产生当前集合中所有元素的顺序流或并行流。 == 流的创建 == == 流的转换 == === filter 、map 和 flatMap 方法 === === 抽取子流和连接流 === === 其他的流转换 === == 流的终止操作 == === 简单约简 === === Optional 类型 === ==== 如何使用Optional值 ==== ==== 不适合使用Optional值的方式 ==== ==== 创建Optional 值 ==== ==== 用flatMap 来构建Optional值的函数 ==== === 收集结果 === === 收集到映射表中 === === 群组和分区 === == 其他 == === 下游收集器 === === 约简操作 === === 基本类型流 === === 并行流 ===
返回至“
核心技术Ⅱ:流
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息