两种获取Stream流的方式
备注:“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流的方式相关推荐
- 两种获取connectionString的方式
两种获取connectionString的方式 1. public static string connectionString = ConfigurationManager.ConnectionSt ...
- Hibernate中两种获取Session的方式
转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...
- 使用Stream流的方式,遍历集合,对集合中的数据进行过滤
Stream的更优写法 下面来看一下借助Java 8的Stream API,什么才叫优雅: package com.learn.demo01.Stream;import java.util.Array ...
- 一文带你掌握OBS的两种常见的鉴权方式
OBS提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用.在调用OBS的API前,需要了解OBS的鉴权认证方式.本文就将 ...
- 什么是动态代理?两种常用的动态代理方式
什么是动态代理? 动态代理就是,在程序运行期,创建目标对象的代理对象,并对目标对象中的方法进行功能性增强的一种技术.在生成代理对象的过程中,目标对象不变,代理对象中的方法是目标对象方法的增强方法.可以 ...
- vue中基于echarts和基于高德地图的两种地图下钻与上浮方式
** vue中基于echarts和基于高德地图的两种地图下钻与上浮方式 ** 基于echarts的地图下钻与上浮(浙江省为例) 第一步:在<template>中构建承载echarts的do ...
- 【H5】 两种屏幕宽度大小自适应方式
[H5] 两种屏幕宽度大小自适应方式: 第一种 由于rem是获取html根属性的字体大小 改变html的字体大小,通过rem设置所以样式的宽高: //rem为html的字体大小 通过改变html的字体 ...
- 基于web端和C++的两种深度学习模型部署方式
深度学习Author:louwillMachine Learning Lab 本文对深度学习两种模型部署方式进行总结和梳理.一种是基于web服务端的模型部署,一种是基... 深度学习 Author:l ...
- reportConfig.xml两种数据源连接的配置方式
在reportConfig.xml配置文件中,我们提供了两种数据源连接的配置方式,分别如下: 1.jndi数据源配置(即:在dataSource中配置) 此配置适用于在j2ee的服务器中配置了j ...
最新文章
- 如何正确的学习Blender-入门到精通课程
- JUC并发编程十 并发架构--Unsafe
- ios hitTest及扩展---分解ZFPlayer
- 【Java报错】多数据源mapper异常more than one `primary` bean found among candidates: [sqlSessionFactory] 问题分析解决
- C#获取类名为Internet_Explorer_Server控件的内容
- 9行代码AC——1011 A+B 和 C (15分)
- redis种类型对应java类型_Redis的五种基本数据类型介绍
- bootstrap table 搜索列formatter之后,单字节搜索异常
- python接口自动化关联参数_python接口自动化7-参数关联
- RDC出库财务计费逻辑
- 采用FTP协议实现文件的上传
- 图像检索:一维直方图+欧几里得距离+flann+KNN
- ASP.NET取用户浏览器IP地址等信息
- bootstrap table 适应移动端_前端框架bootstrap和layui有什么区别
- C++::My Effective C++ (二)
- 华为摄像机搜索软件_华为放大招!概念股掀涨停潮,A股全产业链名单曝光(附名单)...
- layoutit+Bootstrap html页面布局+CSS
- 地理加权回归出现多重共线性如何解决
- Qt编写可视化大屏电子看板系统31-模块9视频监控
- Another version of Vue Devtools seems to be installed报错