【Java基础笔记】Java集合流Stream.docx
Java 集合流 Stream Java 集合流 Stream 是 Java 8 中引入的一种新的数据处理方式,提供了一种高效、灵活的数据处理方法。它可以让我们在集合的基础上指定计算的数据视图,从而简化数据处理过程。 流的概念 流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图。通过使用流,我们可以说明想要完成的任务,而不是说明如何去实现它。以做什么的方式来处理集合。流可以让我们关注于数据处理的逻辑,而不是具体的实现细节。 流的创建 流可以通过多种方式创建,包括: 1. 通过 `Collection` 接口中的 `default Stream<E> stream()` 方法,将集合转换为普通流。 2. 通过 `Collection` 接口中的 `default Stream<E> parallelStream()` 方法,将集合转换为并行流。 3. 通过 `java.util.stream.Stream<T>` 类的 `Stream<T> empty()` 方法,创建一个空的流对象。 4. 通过 `java.util.stream.Stream<T>` 类的 `Stream<T> of(T... values)` 方法,创建一个由可变参数构成的流对象。 5. 通过 `Stream<T>` 类的 `Stream<T> generate(Supplier<T> s)` 方法,反复调用 `get` 方法构成的一个无限流。 6. 通过 `Arrays` 类的 `Stream<T> stream(T[] array)` 和 `stream(T[] array, int startInclusive, int endExclusive)` 方法,通过指定数组构建一个流对象。 7. 通过 `java.nio.file.Files` 的 `Stream<String> lines(Path path, Charset cs)` 方法,将文件内容转换为流对象。 流的常用操作 流提供了多种常用操作,包括: 处理操作 * `filter(Predicate<? super T> predicate)`: 将不符合断言的元素除去,返回一个新流。 * `map(Function<? super T,? extends R> mapper)`: 对流中元素进行指定操作,返回一个新流。 * `limit(long maxSize)`: 取指定个数的元素。 * `skip(long n)`: 跳过指定个数的元素,取之后的元素。 * `distinct()`: 对流中元素进行去重操作。 * `sorted()`: 对流中元素进行排序。 * `sorted(Comparator<? super T> comparator)`: 对流中元素按照指定的方式进行排序。 * `concat(Stream<? extends T> a, Stream<? extends T> b)`: 连接流 A 和流 B,返回一个新流。 简单约简 * `long count()`: 返回流中元素的数量。 * `forEach(Consumer<? super T> action)`: 对流中元素依次进行操作。 * `boolean allMatch(Predicate<? super T> predicate)`: 如果流中元素全部满足条件则返回 true。 * `boolean anyMatch(Predicate<? super T> predicate)`: 如果流中任一元素满足条件则返回 true。 * `boolean noneMatch(Predicate<? super T> predicate)`: 如果流中没有一个元素满足条件则返回 true。 * `Optional<T> findAny()`: 返回流中任意一个元素。 * `Optional<T> findFirst()`: 返回流中第一个元素。 * `Optional<T> max(Comparator<? super T> comparator)`: 根据定制的规则寻找流中最大值。 * `Optional<T> min(Comparator<? super T> comparator)`: 根据定制的规则寻找流中最小值。 * `collect(Collector<? super T,A,R> collector)`: 收集流中的元素,转换为集合。 * `toArray(IntFunction<A[]> generator)`: 收集流中的元素,转换为数组。 Optional类 Optional 类是一个包装器对象,内置了值,将值进行封装,可以有效避免判断对象是否为 null 的操作或出现空指针的异常。 常用方法: * `Optional<T> empty()`: 创建一个空的 Optional 对象。 * `Optional<T> of(T value)`: 创建一个指定值的 Optional 对象。 * `Optional<T> ofNullable(T value)`: 值不是 null 返回一个 Optional 对象,否则返回一个空 Optional 对象。 * `T get()`: 获取其中的值,如果不存在则抛出 `NoSuchElementException`。 * `ifPresent(Consumer<? super T> consumer)`: 如果存在值,则执行指定的操作。






















- 粉丝: 9
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机温度控制系统设计方案.doc
- 数字技术与网络传播背景下的广告生存形态最新年文档.doc
- 浅析电气工程及其自动化的发展创新.docx
- C5单片机电子台历的设计与制作.ppt
- (源码)基于C语言汇编的EulixOS训练营在线作业.zip
- 套筒零件加工工艺分析研究编程.doc
- 企业IT建设与项目管理思想.docx
- 株洲服装产业物联网项目市场风险识别与衡量.doc
- 电子商务-本科专业审核评估自评分析报告模板.doc
- 信息与通信技术进展:计算理论与实践研讨会
- 全国计算机等级历年考试四级网络工程师过关练习711章.doc
- JSPSmart题库及试卷管理模块的与开发.doc
- 计算机网络技术在电子信息工程中的应用(1).docx
- 计算机网络安全论文(乱凑的).doc
- 我国P2P网络信贷信用风险影响因素分析.docx
- 基于简单神经网络模型实现图片分类的方法


