《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.5 其他的流转换

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第1章 ,第1.5节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 其他的流转换

distinct方法会返回一个流,它的元素是从原有流中产生的,即原来的元素按照同样的顺序剔除重复元素后产生的。这个流显然能够记住它已经看到过的元素。
image

对于流的排序,有多种sorted方法的变体可用。其中一种用于操作Comparable元素的流,而另一种可以接受一个Comparator。下面,我们对字符串排序,使得最长的字符串排在最前面:
image

与所有的流转换一样,sorted方法会产生一个新的流,它的元素是原有流中按照顺序排列的元素。
当然,我们在对集合排序时可以不使用流。但是,当排序处理是流管道的一部分时,sorted方法就会显得很有用。
最后,peek方法会产生另一个流,它的元素与原来流中的元素相同,但是在每次获取一个元素时,都会调用一个函数。这对于调试来说很方便:
image

当实际访问一个元素时,就会打印出来一条消息。通过这种方式,你可以验证iterate返回的无限流是被惰性处理的。
对于调试,你可以让peek调用一个你设置了断点的方法。
java.util.stream.Stream 8

  • Stream distinct()
    产生一个流,包含当前流中所有不同的元素。
  • Stream sorted()
  • Stream sorted(Comparator<? super T> comparator)
    产生一个流,它的元素是当前流中的所有元素按照顺序排列的。第一个方法要求元素是实现了Comparable的类的实例。
  • Stream peek(Consumer<? super T> action)
    产生一个流,它与当前流中的元素相同,在获取其中每个元素时,会将其传递给action。
相关文章
|
1月前
|
开发框架 Java API
最新Java基础系列课程--Day13-高级特性(二)
最新Java基础系列课程--Day13-高级特性
|
5月前
|
算法 安全 Java
2023年Java核心技术第十三篇(篇篇万字精讲)
2023年Java核心技术第十三篇(篇篇万字精讲)
55 1
|
1月前
|
Java 程序员 API
最新Java基础系列课程--Day13-高级特性(三)
最新Java基础系列课程--Day13-高级特性
|
1月前
|
开发框架 Java 程序员
最新Java基础系列课程--Day13-高级特性(一)
最新Java基础系列课程--Day13-高级特性
|
2月前
|
开发框架 Java 程序员
最新Java基础系列课程--Day13-高级特性
最新Java基础系列课程--Day13-高级特性
|
2月前
|
存储 Java 编译器
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记(下)
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记
78 0
|
2月前
|
存储 自然语言处理 Java
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记(上)
《Java 核心技术卷1 基础知识》第三章 Java 的基本程序设计结构 笔记
76 0
|
2月前
|
Oracle Java 关系型数据库
《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记
《Java 核心技术卷1 基础知识》第二章 Java 程序设计环境 笔记
29 1
|
2月前
|
存储 Java 编译器
《Java 核心技术卷1 基础知识》第一章 Java程序设计概述 笔记
《Java 核心技术卷1 基础知识》第一章 Java程序设计概述 笔记
40 0
|
2月前
|
Java API 容器
资深Java大牛带你由基础到原理再到项目实战,轻松掌控核心技术
《Java编程的逻辑》致力于帮助读者真正理解Java编程。对于每个语言特性和API,不仅介绍其概念和用法,还分析了为什么要有这个概念,实现原理是什么,背后的思维逻辑是什么;对于类库,分析了大量源码,使读者不仅知其然,还知其所以然,以透彻理解相关知识点。
资深Java大牛带你由基础到原理再到项目实战,轻松掌控核心技术