`
jobar
  • 浏览: 347414 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

集合框架(2)-什么是stream?

 
阅读更多
stream是一系列的值。包java.util.stream defines定义了引用值(Stream)的stream类型和一些原语stream类(IntStream,LongStream和DoubleStream)。streams类就像迭代器,它们按处理需求产生元素,但不与任何特定的存储机制关联。stream有时候局部计算-它们中某些元素仍会生成,有时候它的元素会全部参与计算,此时会结束stream。stream可以将数组、集合、生成函数或者一个IO通道作为它的数据源;它也可以是另一个stream的操作结果(见下文)。一种可部分计算流可以有无穷多个元素生成,例如来源于生成函数。

stream类型定义中间的操作(从而产生新的数据流),例如map,和最终操作(导致非流值),如forEach。对中间操作的调用通常以一种流式风格的API链接在一起,形成了一个管道(如前所述)。最终操作,正如它的名字所暗示的,终止方法链。最终操作又被称为“及早操作”,因为调用会导致立即从管道中消费值,而中间操作也叫“懒操作”,只会按需产生值。例如,假设strings被声明为List<String>,代码:
     IntStream ints = strings.stream().mapToInt(s -> s.length()).filter(i -> i%2 != 0);


启动一个管道,首先生成一个相应于字符串值长度int值的stream,然后仅在奇数时通过。但是对于声明为ints的结果来说什么也没发生。当有像这样的语句时才发生处理
    
ints.forEach(System.out::println);

使用一个及早最终操作来将管道中的值取出。
下表显示了流操作的一个小示例。为简单起见选择了这些例子,出于同样的原因,方法签名中的有界泛型类被替换成了其界类型。



streams可以是有序或者无序的。stream的来源是数组、链表或者生成函数是有序的,来源是集合是无序的。顺序是由最中间操作保存;异常进行排序,其中规定了先前存在是有序的还是无序,从而消除了存在于接收器的任何顺序。在有些情况下会提供这种操作:最终操作的顺序不明显但开发者想更高效的利用这些操作,其在某些无序的stream上并行操作比串行操作更高效。大多数最终操作遵循顺序;例如toArray,被称为一个有序流,按元素顺序创建一个数组。forEach是个例外;其流中元素处理的顺序是不定的。

原文链接:http://www.lambdafaq.org/what-is-a-stream/
  • 大小: 105.2 KB
分享到:
评论

相关推荐

    spring-integration-stream-4.0.2.RELEASE.zip

    标题 "spring-integration-stream-4.0.2.RELEASE.zip" 暗示了这是一个关于Spring Integration框架的特定版本,4.0.2.RELEASE,其中聚焦于流处理的组件。Spring Integration是Spring框架的一个扩展,它提供了一种声明...

    spring-integration-stream-2.1.5.RELEASE.zip

    通过 `spring-integration-stream-2.1.5.RELEASE.zip`,开发者可以获得一个稳定版本的框架,用于构建高效、灵活的集成解决方案。而 `spring-integration-master` 中的源代码则为学习和定制该框架提供了宝贵的资源。

    Java的集合框架和StreamAPI

    Java 集合框架和 Stream API Java 集合框架是 Java 编程语言中的一组预定义类和接口,用于存储和操作数据集合。它提供了多种集合类型,例如 Set、List、Queue 等,每种集合类型都有其特定的方法和操作。Java 集合...

    JAVA面试题

    6. **集合框架** - ArrayList和LinkedList的区别是什么? - HashMap和TreeMap的工作原理是什么?它们的时间复杂度是多少? - 什么是迭代器?如何使用? 7. **多线程** - 如何创建线程?使用Thread类和实现...

    PyPI 官网下载 | django-activity-stream-0.3.3.tar.gz

    标题"PyPI 官网下载 | django-activity-stream-0.3.3.tar.gz"指的是在Python的官方包管理器PyPI(Python Package Index)上下载的名为`django-activity-stream`的软件包的版本0.3.3,其打包格式为tar.gz。...

    Java集合框架常见面试题.pdf

    - 集合框架提供了多种遍历集合的方法,如迭代器(Iterator)、增强for循环以及Java 8引入的Stream API。 7. 集合的线程安全: - 集合框架中的类大多不是线程安全的,但可以通过同步包装类(Collections....

    集合框架总结图

    集合框架是Java编程语言中的一个核心部分,它提供了一套高效、灵活的数据结构和算法,使得开发者能够方便地管理和操作对象。本总结图详细而全面地涵盖了Java集合框架的主要概念和组件,对于初学者和有经验的开发人员...

    集合框架的使用方法

    在Java编程语言中,集合框架是处理对象集合的核心工具,它提供了一套高效、灵活的数据结构和算法。本文将深入探讨集合框架的使用方法,包括其基本概念、主要类库以及常见操作,同时也会提及一些源码分析和实用工具。...

    Java 集合方面的面试题

    Java 中集合框架的主要接口是什么? ArrayList 和 LinkedList 有什么区别? HashSet 和 TreeSet 有什么区别? HashMap 和 TreeMap 有什么区别? 什么是迭代器?如何使用它来遍历集合? 什么是 fail-fast 机制? 如何...

    集合框架的总结

    在Java编程语言中,集合框架是开发者日常工作中不可或缺的一部分,它提供了一种高效管理对象的方式。本文将深入探讨集合框架的总结,重点关注其核心接口、类以及如何通过源码理解和利用这些工具。 首先,集合框架的...

    Java-collection-frame.rar_Java集合框架

    Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储、管理和操作提供了丰富的类库。这个框架包括了各种接口、类以及实现,使得开发者能够高效地处理对象的集合,无论是小型还是大型数据集。在Java...

    java面试题目汇总

    5. **集合框架** - ArrayList和LinkedList的区别是什么? - HashMap和HashTable的异同,以及它们线程安全性的差异。 - 解释一下Java中的Set接口和List接口。 6. **IO与NIO** - 传统IO与NIO的主要区别是什么? ...

    Java集合框架培训资料

    Java集合框架是Java编程语言中的核心组件之一,它为数据存储和管理提供了丰富的类和接口。这个培训资料将深入探讨Java集合框架的各个方面,帮助开发者更有效地利用这些工具。 首先,我们要了解Java集合框架的基本...

    data-stream数据处理框架(含调度机制)

    在"data-stream-processing"压缩包中,可能包含以下组件和文档: 1. **源代码**:实现"data-stream"框架的Java或Scala代码,包括对Flink API的扩展和自定义调度器的实现。 2. **配置文件**:定义调度策略、作业参数...

    java集合框架

    Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储、管理和操作提供了丰富的类库。这个框架包括了接口、类以及它们之间的关系,旨在高效地处理各种数据结构。全面接触Java集合框架意味着要深入理解...

    java集合框架PPT

    Java集合框架是Java编程语言中一个至关重要的部分,它为数据存储和操作提供了丰富的类库。这个PPT作为培训教材,旨在深入解析Java集合框架的核心概念、接口和类,帮助学习者掌握其基本使用和高级特性。以下是Java...

    Java基础精品课17-集合框架.zip

    Java集合框架是Java编程语言中的核心组件之一,它为存储、管理和操作对象提供了一组高效且灵活的数据结构。本课程“Java基础精品课17-集合框架”将深入讲解这一重要概念,帮助开发者掌握如何在Java中有效地处理数据...

    全面接触Java集合框架

    Java集合框架是Java编程语言中不可或缺的一部分,它提供了一种高效、灵活的方式来存储和操作数据。这个框架包括了各种接口和类,它们为开发者提供了多种数据结构,如数组、链表、队列、堆栈、映射等。下面将详细探讨...

    java集合框架全面进阶

    Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组接口和类,用于高效地存储、管理和操作数据。本篇文章将深入探讨Java集合框架的各个方面,帮助开发者从基础到高级全面掌握这一关键知识。 首先,我们要...

Global site tag (gtag.js) - Google Analytics