iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaStream流零基础教程
  • 659
分享到

JavaStream流零基础教程

JavaStream流JavaStream 2022-11-13 19:11:45 659人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、Stream流介绍二、Stream流实现与传统方式实现对比2.1、传统方式实现2.2、Stream流方式实现三、Stream流的常用api3.1、stream流的获取3.2、

一、Stream流介绍

jdk8时,JAVA新增了lambda表达式,它与 java.io 包里的 InputStream和 OutputStream是完全不同的概念,他更跟流没有任何关系。它也不同于 StAX 对 XML解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的Stream。

JDK8 中的 Stream 是对集合(Collection)对象功能的增强,它借助于lambda表达式,更优雅的表达风格,极大的提高编程效率和程序可读性。它针对于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。不多说,上用法。

二、Stream流实现与传统方式实现对比

**案例:**找出列表中包含张三且姓名长度为2的名字

2.1、传统方式实现

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 1.定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("张四");
        list.add("四");
        list.add("张四");
        list.add("张四");
        list.add("张四");
        list.add("张四");
        // 2.挑选list中包含张三的
        ArrayList<String> list1 = new ArrayList<>();
        for (String s : list) {
            if (s.startsWith("张三")){
                list1.add(s);
            }
        }
        System.out.println("挑选list包含张三的结果:"+list1);
        // 3.再从list1中挑选挑选名字长度为2的
        ArrayList<String> list2 = new ArrayList<>();
        for (String s : list1) {
            if (s.length() == 2){
                list2.add(s);
            }
        }
        System.out.println("挑选list1长度为2的结果:"+list2);
        // 4、遍历
        for (String s : list2) {
            System.out.println("最终结果 = " + s);
        }
    }
}

2.2、Stream流方式实现

package com.controller;
import java.util.ArrayList;
public class Boo {
    public static void main(String[] args) {
        // 定义一个集合,并填入数据
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("李四");
        list.add("李四");
        list.add("王五");
        list.add("王五");
        list.add("王五");
        //Stream流的实现
        list.stream()
                .filter((name) -> name.startsWith("张三"))
                .filter((name) -> name.length()==2)
                .forEach((name) -> System.out.println(name));
    }
}

三、Stream流的常用API

3.1、stream流的获取

在Collection集合下,均有一个stream(),另一个即是用Stream的一个静态方法 of() 实现。

上代码:

package com.controller;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Stream;
public class Boo {
    public static void main(String[] args) {
        //Collction集合
        Collection<String> collection = new ArrayList();
        Stream<String> stream = collection.stream();
        //List集合
        List<String> list = new ArrayList<>();
        Stream<String> stream1 = list.stream();
        //ArrayList集合
        ArrayList<String> arrayList = new ArrayList<>();
        Stream<String> stream2 = arrayList.stream();
        //LinkedList集合
        LinkedList<String> linkedList = new LinkedList<>();
        Stream<String> stream3 = linkedList.stream();
        //of()方式的实现
        List<String> list1 = new ArrayList<>();
        Stream<List<String>> stream4 = Stream.of(list1);
        //传入可变数组
        Stream<String> stream5 = Stream.of("1","2","3","4");
    }
}

3.2、forEach()

遍历流中的对象

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("李四");
        list.add("李四");
        list.add("李四");
        list.add("李四");
        list.add("李四");
        //遍历流的对象
        list.stream().forEach((name) -> System.out.println(name));
    }
}

3.3、filter()

filter对流对象进行过滤操作

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四二");
        list.add("李四我");
        list.add("李四去晚");
        list.add("李四请问");
        list.add("李四去");
        list.add("李四我");
        //过滤流的对象
        list.stream().filter((name) -> name.length()==2);
    }
}

3.4、map()

map()是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        //map()是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型
        list.stream().map(num -> Integer.parseInt(num));
    }
}

3.5、count()

count是对流数据统计的方法,但是count之后返回的是long类型,因此无法再进行流操作。

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");
        list.add("6");
        list.add("7");
        //count()对流数据进行统计
        System.out.println(list.stream().count());
    }
}
3.6、limit()

3.6、limit()

选取流数据的前多少条数据

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("李二1");
        list.add("李二2");
        list.add("李二3");
        list.add("李二4");
        list.add("李二5");
        list.add("李二6");
        list.add("李二7");
        //limit() 选取流数据的前多少条数据
        list.stream().limit(2);
    }
}

3.7、skip()

跳过流数据的前多少条数据,该方法与limit()方法刚好相反

package com.controller;
import java.util.ArrayList;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("李小龙1");
        list.add("李小龙2");
        list.add("李小龙3");
        list.add("李小龙4");
        list.add("李小龙5");
        list.add("李小龙6");
        list.add("李小龙7");
        //skip() 跳过流数据的前多少条数据
        list.stream().skip(2);
    }
}

3.8、concat()

Stream的静态方法concat()实现对两个流数据进行合并

package com.controller;
import java.util.ArrayList;
import java.util.stream.Stream;
public class Aoo {
    public static void main(String[] args) {
        // 定义一个集合
        ArrayList<String> list = new ArrayList<>();
        list.add("张三丰1");
        list.add("张三丰2");
        list.add("张三丰3");
        list.add("张三丰4");
        list.add("张三丰5");
        list.add("张三丰6");
        list.add("张三丰7");
        // 定义一个集合
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("1");
        list1.add("2");
        list1.add("3");
        list1.add("4");
        list1.add("5");
        list1.add("6");
        list1.add("7");
        //concat()实现对两个流数据进行合并
        Stream.concat(list.stream(),list1.stream());
    }
}

四、总结

Stream 使用一种类似用 sql 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让

程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。

到此这篇关于Java Stream流零基础教程的文章就介绍到这了,更多相关Java Stream流内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaStream流零基础教程

本文链接: https://www.lsjlt.com/news/171232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaStream流零基础教程
    目录一、Stream流介绍二、Stream流实现与传统方式实现对比2.1、传统方式实现2.2、Stream流方式实现三、Stream流的常用API3.1、stream流的获取3.2、...
    99+
    2022-11-13
    Java Stream流 Java Stream
  • OpenMV零基础教程
    一、资料导航         “工欲善其事,必先利其器”。在正式学习OpenMV之前,你必须知道一条或几条OpenMV的学习途径。这里推荐星瞳科技的中文官网教程,这个教程里面包括了OpenMV IDE的下载和安装、OpenMV上手教程、Op...
    99+
    2023-08-31
    python stm32
  • Swaggo零基础入门教程
    目录配置流程注意区分下载swaggo初始化快速上手gin-swagger简单测试详细配置配置流程 注意区分 go-swagger != swaggo 二者功能差不多,都是生成接口文档...
    99+
    2023-01-28
    Swaggo入门 Golang Swaggo入门
  • reactrouter零基础使用教程
    目录安装配置路由添加一个新页面测试路由配置未找到的路由跳转页面通过 js通过 dom嵌套页面安装 既然学习 react router 就免不了运行 react 安装 react np...
    99+
    2024-04-02
  • Vue electron零基础使用教程
    需求:给vue项目加一个外壳(electron),顾名思义也就是使用electron应用程序运行vue项目,直接将写好上线的vue项目在线地址放入electron程序中即可 操作步骤...
    99+
    2022-11-13
    Vue electron Vue electron
  • Windows10安装MySQL教程(零基础)
    1、下载MySQL 官网:https://www.mysql.com/cn/ 点击下载 选择社区版 ...
    99+
    2023-09-07
    mysql 数据库 Powered by 金山文档
  • HTML入门零基础教程(四)
    嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 通过前三篇的学习,相信你们对HTML有了一些基础的了解,那么我们就来先做一个小练习,巩固一下之前所学习的知识。 目...
    99+
    2023-08-31
    html 前端 css javascript vscode
  • Python零基础教程系列:“Hello World!”
    做了这么多准备,环境也搭建好了,辅助知识也掌握了,是到了编写我们第一个Python程序的时候了。在IDLE里或Pycharm里输入:print("Hello World!")...
    99+
    2023-06-01
  • Wireshark零基础使用教程(超详细)
    Wireshark 是一款开源的网络抓包工具,用于分析网络中的数据包。它可以帮助你深入了解网络通信过程,发现问题和解决网络故障。本教...
    99+
    2023-09-23
    Wireshark
  • 零基础搭建boot+MybatisPlus的详细教程
    目录1.准备工作1.1 创建数据库表1.2 创建boot项目1.3 创建实体类(映射数据库表)2.使用mybatisPlus(操作数据库)2.1 添加mybatisPlus依赖2.2...
    99+
    2024-04-02
  • Android使用JetpackCompose开发零基础起步教程
    目录永远的Hello World分解的HelloWorld代码预览函数先搭建好之后呢,我们就来做第1个例子。 永远的Hello World 先搭建好之后呢,我们就来做第1个例子,编程...
    99+
    2023-05-15
    Android Jetpack Compose Jetpack Compose入门
  • Python零基础教程系列:代码编辑器
    Python解释器、pip工具箱和virtuanlenv虚拟环境都安装好了后,基本的Python环境就搭建好了,可以开始我们的“搬砖”之旅了。但是,等等,“工欲善其事,必先利其器”,我们还差一个很多小伙伴都非常喜欢的环节,那就是代码编辑器的...
    99+
    2023-06-01
  • 知名技术作家分享Python零基础教程!
    最近这段时间,身边常常有人问:该不该学Python?如何学Python? Python包含的内容很多,加上各种标准库、拓展库,乱花渐欲迷人眼。 很多初学者都迫切希望能出现一个容易上手、言语简洁的Python教程,最好是能循序渐进,...
    99+
    2023-01-31
    基础教程 知名 作家
  • 阿里云服务器教程零基础入门指南
    阿里云服务器是阿里巴巴推出的一种云计算产品,为用户提供灵活、高效、安全的云计算服务。本文将为您提供一份零基础入门的阿里云服务器教程,让您轻松上手。 一、了解阿里云服务器阿里云服务器是阿里云提供的云计算产品,可以帮助您快速搭建和运行网站、应用...
    99+
    2023-11-15
    阿里 入门 服务器
  • Python基础教程
    6.4.5 参数收集的逆过程 假设有如下函数: def add(x,y): return x+y 比如说有个包含由两个相加的数字组成的元组: params = (1,2) 使用*运算符对参数进行“分配”,不过是在调用而不是在定义时使用: ...
    99+
    2023-01-31
    基础教程 Python
  • 万字【Python基础】保姆式教学,零基础快速入门Python
    前言 又是爆肝干文的日子,继上次说要出一期Python新手入门教程系列文章后,就在不停地整理和码字,终于是把【基础入门】这一块给写出来了。 高级编程的【正则表达式】和【面向对象编程】内容我在之前已经...
    99+
    2023-09-02
    python 爬虫 函数闭包 元组 列表
  • 零基础如何学python编程
    对于零基础的初学者来说,学习Python编程需要遵循一定的步骤和方法。以下是一些建议,可以帮助您从零开始学习Python编程:1、了解编程基础:在学习编程之前,您需要了解一些编程基础概念,如编程语言、编程范式、算法和数据结构等。这些概念将帮...
    99+
    2023-10-25
    python Python编程
  • 零基础也能看懂的python内置csv模块教程
    目录csv(Comma-Separated Values)文件是什么?python 中的 csv 文件清晰解法读取文件写入文件csv 文件其它说明csv(Comma-Separate...
    99+
    2024-04-02
  • Python基础教程:Flask进击篇——Flask运行流程
    Python基础教程:Flask进击篇——Flask运行流程一次完整的请求在我们了解Flask运行流程之前,先看一下我们在浏览器一次请求中所经历的过程,下面这张是结合Flask的源码绘制的一张流程图...
    99+
    2023-06-02
  • MySQL——存储过程和函数从零基础到入门必学教程(涵盖基础实战)
    目录 ​前言 一、创建存储过程 二、在存储过程中使用变量 1.定义变量 2.为变量赋值 三、光标的使用 1.打开光标 2.打开光标 3.使用光标 4.关闭光标 四、流程控制的作用 1.IF语句 2.CASE语句 3.LOOP语句 4.LEA...
    99+
    2023-09-01
    mysql 数据库 sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作