JDK8新特性之Stream流02

获取 Stream流的两种方式

目标

掌握根Collection获取流。

掌握Stream中的静态方法of获取流

java.util.stream.Stream 是JDK 8新加入的流接口

获取一个流非常简单,有一下几种常用的方式:

        所有的Collection集合都可以通过stram默认方法获取流

        Stream接口的静态方法of可以获取相对应的流

 方式1:根据Collection获取流

首先,java.util.Collection接口中加入了default方法 stream 用来获取流,所以其所有实现类均可获取流。

public interface Collection {
 default Stream<E> stream() 
} 
public class StreamTest02 {
    public static void main(String[] args) {
        //集合获取流
        //Collection接口中的方法:default Stream<E> stream() 获取流
        List<String> list = new ArrayList<>();

        Stream<String> stream01 = list.stream();

        Set<String> set = new HashSet<>();

        Stream<String> stream02 = set.stream();

        Vector<String> vector = new Vector<>();

        Stream<String> stream03 = vector.stream();
    }
}

java.util.Map接口不是Collection的子接口,所以获取对应的流需要分Key,value或者entry等情况:

//Map获取流
        Map<String,String> map = new HashMap<>();
        //通过key获取Stream流
        Stream<String> stream001 = map.keySet().stream();
        //通过value获取Stream流
        Stream<String> stream002 = map.values().stream();
        //通过entry获取Stream流
        Stream<Map.Entry<String,String>> stream003 = map.entrySet().stream();

方式2:Stream中的静态方法of获取流

由于数组对象不可能添加默认方法,所有Stream接口中提供了静态方法of,使用很简单:

public class StreamTest03 {
    public static void main(String[] args) {
        //Stream流中的静态方法:static Stream of(T... values)
        Stream<String> stream01 = Stream.of("张三","李四");

        //of方法的参数其实是一个可变参数,所以支持数组
        String[]  arr = {"aa","bb"};
        Stream<String> stream02 = Stream.of(arr);

        // 注意:基本数据类型的数组不行
        int[] arr3 = {11, 22, 33};
        Stream<int[]> stream9 = Stream.of(arr3);
    }

小结

学习了两种获取流的方式:

1.通过Collection接口中的默认方法Stream stream()

2.通过Stream接口中的静态方法of方法

Stream常用方法和注意事项

目标:

了解Stream常用方法的分类

掌握Stream注意事项

Stream常用方法

Stream流模型的操作很丰富,这里介绍一些常用的API。这些方法可以被分成两种:

  • 终结方法:返回值类型不再是stream类型的方法,不再支持链式调用。本次学习中,终结方法包括count和forEach方法
  • 非终结方法:返回值类型仍然是stream类型的方法,支持链式调用。(除了终结方法外,其余方法均为非终结方法) 
  • 注:本文以外的更多方法请参考API文档

Stream注意事项(重要)

        1.Stream只能操作一次

        2.Stream方法返回的是新的流

        3.Stream不调用终结方法的话,中间的操作是不会执行的。

 Stream流的forEach方法

        forEach用来遍历流中的数据。

       void forEach(Consumer action);

 该方法接受一个Consumer接口函,会将每一个流元素交给该函数处理。

例如:

public class StreamForEach {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        Collections.addAll(list,"张三","李四","王五","赵六");

        list.stream().forEach(s -> System.out.println(s));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/932002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开发类似的同款小程序系统制作流程

很多老板想要开发一款和别人家类似的同款小程序系统&#xff0c;但是不知道该怎么开发制作&#xff0c;本文就为大家详细介绍一下开发类似的同款小程序的流程为大家做参考。 一、前期准备找到对标小程序&#xff1a;首先&#xff0c;需要找到你想要模仿的同款小程序&#xff0…

[软件工程]九.可依赖系统(Dependable Systems)

9.1什么是系统的可靠性&#xff08;reliability&#xff09; 系统的可靠性反映了用户对系统的信任程度。它反映了用户对其能够按照预期运行且正常使用中不会失效的信心程度。 9.2什么是可依赖性&#xff08;dependablity&#xff09;的目的 其目的是覆盖系统的可用性&#x…

idea连接SQL Server数据库_idea连接sqlserver数据库

4.设置密码&#xff08;这一步可以在安装数据库时就可以完成&#xff09;&#xff0c;如果觉得用户名有问题&#xff0c;也可以修改用户名 5.查看SQL Server端口号&#xff08;默认端口&#xff1a;1433&#xff09;&#xff0c;选择SQL Server2019配置管理器 6.打开SQL Server…

macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表

以下是 macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表&#xff1a; 符号按键名称描述⌘Command (Cmd)常用的功能键&#xff0c;用于执行大多数快捷操作。⌥Option (Alt)Option 键&#xff0c;常用于辅助操作和特殊字符输入。⇧ShiftShift 键&#xff0c;常用…

G15沈海高速茶白高架自动化监测

1. 项目简介 G15 沈海高速公路北起辽宁省沈阳市苏家屯区金宝台枢纽&#xff0c;与沈阳市绕城高速公路&#xff08;国家高速 G1501&#xff09;相接&#xff0c;南至海南省海口市秀英区粤海枢纽&#xff0c;与海南地区环线高速公路&#xff08;国家高速 G98&#xff09;相交&am…

openEuler 22.03 使用cephadm安装部署ceph集群

目录 目的步骤规格步骤ceph部署前准备工作安装部署ceph集群ceph集群添加node与osdceph集群一些操作组件服务操作集群进程操作 目的 使用ceph官网的cephadm无法正常安装&#xff0c;会报错ERROR: Distro openeuler version 22.03 not supported 在openEuler上实现以cephadm安装部…

MySQL-DDL之数据库操作

文章目录 一. 创建数据库1. 直接创建数据库&#xff0c;如果存在则报错2. 如果数据库不存在则创建3. 创建数据库时设置字符集4. 栗子 二. 查看数据库1. 查看数据库 三. 删除数据库1. 删除数据库 四. 使用数据库1. 使用数据库2. 查看正在使用的数据库 数据定义语言&#xff1a;简…

java 操作 redis

文章目录 一. java 操作 redis1. 引入依赖2. 配置端口转发3. 连接redis服务器 二. 基础命令get/setexists/delKEYSEXPIRE/TTLTYPE 之前介绍的是各种redis的基本操作/命令, 都是在redis命令行客户端, 手动执行的 但是在日常开发中, 更多的是使用redis的api, 来实现定制化的redis…

WGAN生成对抗网络数据生成

数据生成 | WGAN生成对抗网络数据生成 目录 数据生成 | WGAN生成对抗网络数据生成生成效果基本描述程序设计参考资料 生成效果 基本描述 1.WGAN生成对抗网络&#xff0c;数据生成&#xff0c;样本生成程序&#xff0c;MATLAB程序&#xff1b; 2.适用于MATLAB 2020版及以上版本&…

飞凌嵌入式受邀亮相瑞萨2024工业技术研讨会

11月30日&#xff0c;一年一度的2024瑞萨电子MCU/MPU工业技术研讨会在深圳举行了首秀&#xff0c;为大湾区及全国嵌入式工程师献上一场全新工业技术的大秀。 飞凌嵌入式作为瑞萨电子的生态合作伙伴&#xff0c;给现场观众带去了基于RZ/G2L高性能多核异构处理器设计开发的FET-G2…

C++STL容器vector容器大小相关函数

目录 前言 主要参考 vector::size vector::max_size vector::resize vector::capacity vector::empty vector::reserve vector::shrink_to_fit 共勉 前言 本文将讨论STL容器vector中与迭代器相关的函数&#xff0c;模板参数T为int类型。 主要参考 cpluscplus.com 侯…

JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))

目录 一、Servlet详细。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;基本作用。 1、接收客户端请求数据。 2、处理请求。 3、完成响应结果。 二、Servlet的三种实现方式。 &#xff08;1&#xff09;实现javax.servlet.Servlet接口。 1、基本介绍。 2、代码…

Spring Boot读取配置文件的六种方案

从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一&#xff0c;但就是这么常用的功能&#xff0c;仍然有很多开发者在这个方面踩坑&#xff0c;以下是我整理的几种获取配置属性的方式。 一、Environment 使用 Environment 方式来获取配置属性值非常简单&#xf…

在google cloud虚拟机上配置anaconda虚拟环境简单教程

下载anaconda安装包 wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh 安装 bash Anaconda3-2022.10-Linux-x86_64.sh 进入base环境 eval "$(/home/xmxhuihui/anaconda3/bin/conda shell.bash hook)" source ~/.bashrc 安装虚拟环境…

【5G】5G目标和标准化 5G targets and standardization

5G标准是在第三代合作伙伴关系项目&#xff08;3GPP&#xff0c;3rd Generation Partnership Project&#xff09;中定义的&#xff0c;实际的标准制定工作由参与3GPP活动的区域标准机构成员共同推进。目前&#xff0c;超过600家公司通过各自的地区标准组织成为3GPP的成员。然而…

神经网络的梯度反向传播计算过程,举例说明

目录 神经网络的梯度反向传播计算过程 网络结构 权重和偏置 激活函数 前向传播 损失函数 反向传播 参数更新 举例 神经网络的梯度反向传播计算过程 为了说明神经网络的梯度反向传播计算过程,我们考虑一个简单的全连接网络,该网络有一个输入层、一个隐藏层和一个输出…

网络分层模型( OSI、TCP/IP、五层协议)

1、网络分层模型 计算机网络是一个极其复杂的系统。想象一下最简单的情况&#xff1a;两台连接在网络上的计算机需要相互传输文件。不仅需要确保存在一条传输数据的通路&#xff0c;还需要完成以下几项工作&#xff1a; 发起通信的计算机必须激活数据通路&#xff0c;这包括发…

Unity中使用Sqlite存储本地数据

sqlite-net sqlite下载页 我的环境&#xff1a;win11、unity团结1.3.4 1.下载sqlite-net&#xff0c;将SQLite.cs脚本导入Unity 2.下载各平台依赖项&#xff0c;如dll、aar等。导入Unity并设置 3.简单列子&#xff0c;打包测试 using System; using System.IO; using SQLi…

详解LeetCode地下城游戏(动态规划)——区分两种状态表示形式

地下城游戏 题目链接&#xff1a;174. 地下城游戏 状态表示&#xff1a; 按照以往题的表示&#xff0c;dp[i][j]表示&#xff1a;从起点&#xff08;0&#xff0c;0&#xff09;位置到达&#xff08;i&#xff0c;j&#xff09;位置时&#xff0c;所需的最小初始健康值。但是…

【JAVA】Java第十三节:String类(String相关方法,以及StrinBuftrer , StringBulder相关方法)

本文详细介绍了String类以及常用的String相关方法&#xff0c;以及StrinBuftrer , StringBulder相关方法的使用&#xff0c;建议有印象即可&#xff0c;不需要都记住&#xff0c;使用时去查取即可 一、创建一个String类型的变量 我们平时创建String类型的变量一般是第一种形式…