备注:“Stream流”其实是一个集合元素的函数模型,它并不是集合,也不是数据结构,其本身并不存储任何
元素(或其地址值)。

Stream(流)是一个来自数据源的元素队列

元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。
数据源 流的来源。 可以是集合,数组 等。

和以前的Collection操作不同, Stream操作还有两个基础的特征:

Pipelining: 中间操作都会返回流对象本身。 这样多个操作可以串联成一个管道, 如同流式风格(fluent
style)。 这样做可以对操作进行优化, 比如延迟执行(laziness)和短路( short-circuiting)。

内部迭代: 以前对集合遍历都是通过Iterator或者增强for的方式, 显式的在集合外部进行迭代, 这叫做外部迭
代。 Stream提供了内部迭代的方式,流可以直接调用遍历方法。

当使用一个流的时候,通常包括三个基本步骤:获取一个数据源(source)→ 数据转换→执行操作获取想要的结
果,每次转换原有 Stream 对象不改变,返回一个新的 Stream 对象(可以有多次转换),这就允许对其操作可以
像链条一样排列,变成一个管道。

package com.learn.demo02.Stream;import java.util.*;
import java.util.stream.Stream;/*java.util.stream.Stream<T>是Java 8新加入的最常用的流接口。(这并不是一个函数式接口。)获取一个流非常简单,有以下几种常用的方式:- 所有的Collection集合都可以通过stream默认方法获取流;default Stream<E> stream​()- Stream接口的静态方法of可以获取数组对应的流。static <T> Stream<T> of​(T... values)参数是一个可变参数,那么我们就可以传递一个数组*/
public class Demo01GetStream {public static void main(String[] args) {//把集合转换为Stream流List<String> list = new ArrayList<>();Stream<String> stream1 = list.stream();Set<String> set = new HashSet<>();Stream<String> stream2 = set.stream();Map<String,String> map = new HashMap<>();//获取键,存储到一个Set集合中Set<String> keySet = map.keySet();Stream<String> stream3 = keySet.stream();//获取值,存储到一个Collection集合中Collection<String> values = map.values();Stream<String> stream4 = values.stream();//获取键值对(键与值的映射关系 entrySet)Set<Map.Entry<String, String>> entries = map.entrySet();Stream<Map.Entry<String, String>> stream5 = entries.stream();//把数组转换为Stream流Stream<Integer> stream6 = Stream.of(1, 2, 3, 4, 5);//可变参数可以传递数组Integer[] arr = {1,2,3,4,5};Stream<Integer> stream7 = Stream.of(arr);String[] arr2 = {"a","bb","ccc"};Stream<String> stream8 = Stream.of(arr2);}
}

两种获取Stream流的方式相关推荐

  1. 两种获取connectionString的方式

    两种获取connectionString的方式 1. public static string connectionString = ConfigurationManager.ConnectionSt ...

  2. Hibernate中两种获取Session的方式

    转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...

  3. 使用Stream流的方式,遍历集合,对集合中的数据进行过滤

    Stream的更优写法 下面来看一下借助Java 8的Stream API,什么才叫优雅: package com.learn.demo01.Stream;import java.util.Array ...

  4. 一文带你掌握OBS的两种常见的鉴权方式

    OBS提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用.在调用OBS的API前,需要了解OBS的鉴权认证方式.本文就将 ...

  5. 什么是动态代理?两种常用的动态代理方式

    什么是动态代理? 动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的方法进行功能性增强的一种技术.在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象方法的增强方法.可以 ...

  6. vue中基于echarts和基于高德地图的两种地图下钻与上浮方式

    ** vue中基于echarts和基于高德地图的两种地图下钻与上浮方式 ** 基于echarts的地图下钻与上浮(浙江省为例) 第一步:在<template>中构建承载echarts的do ...

  7. 【H5】 两种屏幕宽度大小自适应方式

    [H5] 两种屏幕宽度大小自适应方式: 第一种 由于rem是获取html根属性的字体大小 改变html的字体大小,通过rem设置所以样式的宽高: //rem为html的字体大小 通过改变html的字体 ...

  8. 基于web端和C++的两种深度学习模型部署方式

    深度学习Author:louwillMachine Learning Lab 本文对深度学习两种模型部署方式进行总结和梳理.一种是基于web服务端的模型部署,一种是基... 深度学习 Author:l ...

  9. reportConfig.xml两种数据源连接的配置方式

     在reportConfig.xml配置文件中,我们提供了两种数据源连接的配置方式,分别如下: 1.jndi数据源配置(即:在dataSource中配置) 此配置适用于在j2ee的服务器中配置了j ...

最新文章

  1. 如何正确的学习Blender-入门到精通课程
  2. JUC并发编程十 并发架构--Unsafe
  3. ios hitTest及扩展---分解ZFPlayer
  4. 【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
  5. C#获取类名为Internet_Explorer_Server控件的内容
  6. 9行代码AC——1011 A+B 和 C (15分)
  7. redis种类型对应java类型_Redis的五种基本数据类型介绍
  8. bootstrap table 搜索列formatter之后,单字节搜索异常
  9. python接口自动化关联参数_python接口自动化7-参数关联
  10. RDC出库财务计费逻辑
  11. 采用FTP协议实现文件的上传
  12. 图像检索:一维直方图+欧几里得距离+flann+KNN
  13. ASP.NET取用户浏览器IP地址等信息
  14. bootstrap table 适应移动端_前端框架bootstrap和layui有什么区别
  15. C++::My Effective C++ (二)
  16. 华为摄像机搜索软件_华为放大招!概念股掀涨停潮,A股全产业链名单曝光(附名单)...
  17. layoutit+Bootstrap html页面布局+CSS
  18. 地理加权回归出现多重共线性如何解决
  19. Qt编写可视化大屏电子看板系统31-模块9视频监控
  20. Another version of Vue Devtools seems to be installed报错

热门文章

  1. 开花 (Standard IO)
  2. 如何理解苹果iOS版PhoneGap原理分析
  3. WCF自我学习之(一)
  4. 将switch case转为条件驱动
  5. 注释 —— 《clean code》读后感
  6. 通向架构师的道路(第十一天)之Axis2 Web Service(二)
  7. [转]JSP中EL表达式三元运算符的使用
  8. 【项目管理】老板与客户意见冲突怎么办?
  9. 创业公司如何做数据分析(四)ELK日志系统
  10. Sedawk笔记之awk篇:快速了解Awk(三)