首页 > 其他分享 >Stream流-传统集合的多步变量代码和使用Stream流方式进行过滤

Stream流-传统集合的多步变量代码和使用Stream流方式进行过滤

时间:2022-08-22 11:12:50浏览次数:64  
标签:遍历 Stream 多步 list add 过滤 集合

Stream流

说的Stream便容易想到I/O Stream 而实际上 谁规定“流”就一定是Io流呢?在java8中 得益于Lambda所带来的函数式编程 引入了一个全新的Stream概念 用于解决已有集合类库既有的弊端

传统集合的多步变量代码

几乎所有的集合 (如Collection接口或Map接口等)都支持直接或间接的遍历操作 而当我们需要对集合中的元素进行操作的时候 除了必需的添加、删除、获取外 最经典的就是集合遍历

代码:

public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        for (String s : list) {
            System.out.println(s);
        }
    }

这是一段非常简单的集合遍历操作:对集合中的每一个字符串都进行打印输出操作

循环变量的弊端

java 8的Lambda让我们可以更加专注于做什么 而不是怎么做 这点此前已经结合内部类进行了对比说明 现在 我们仔细体会一下代码 可以看到:

  • for循环的语法就是“怎么做”
  • for循环的循环体才是“做什么”

要进行遍历 但是是遍历的唯一方式吗 遍历是指每一个元素逐一进行处理 而并不是从第一个到最后一个顺次处理的循环 前者是目的 后者是方式

试想一下 如果希望对集合中的元素进行筛选过滤:

1.将集合A根据条件一过滤为子集B

2.然后再根据条件二过滤为子集C

使用Stream流的方式进行过滤

使用Stream流的方式 遍历集合 对集合中的数据进行过滤Stream流是JDK1.8之后出现的关注的是做什么 而不是怎么做

public class BStream {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("周伟");
        list.add("赵梅");
        list.add("张强");
        list.add("张三丰");
        /*
            对list集合中的元素进行过滤 只要以张开头的元素 存储到一个新的集合中
            对list集合进行过滤 只要姓名长度为3的人 存储到一个新的集合中
            遍历listB集合
        */
        list.stream().filter(name->name.startsWith("张"))
                .filter(name->name.length()==3)
                .forEach(name->System.out.println(name));
    }
}

 

标签:遍历,Stream,多步,list,add,过滤,集合
From: https://www.cnblogs.com/qihaokuan/p/16612030.html

相关文章

  • 分组和过滤
    分组和过滤--查询不同课程的平均分,最高分,最低分--核心:(根据不同的课程分组)SELECT`subjectname`,AVG(`studentresult`)AS平均分,MAX(`studentresult`)AS最高分,......
  • 2022.8.21 四大函数式接口与Stream流式计算
    12、四大函数式接口(重点)   函数接口:只有一个方法的接口    @FunctionalInterface publicinterfaceRunnable{     publicabstractvoidrun(......
  • 解决使用stream将list转map时,key重复导致报错的问题
    解决使用stream将list转map时,key重复导致报错的问题要将List对象集合转为map集合,可以通过stream流的形式快速实现转换:?123456789//三个Users对象组成一个List集合List......
  • 64位内开发第二十三讲,分层过滤驱动-键盘过滤
    目录64位内开发第二十三讲,分层过滤驱动-键盘过滤一丶键盘过滤的两种方式1.1第一种方式驱动对象方式绑定1.2第二种方式,直接设备类型绑定.1.3效果64位内开发第二十三......
  • 过滤>符号,Linux下写入Webshell
    最近的学习生活中,看到了好兄弟写出的这么一句话让我陷入沉思,是否>被过滤,就意味着写入不了Webshell了?于是有了下面的Payload只要|没被过滤,就有可能写入成功!echo3c3f706......
  • system desing 系统设计(八):视频流videos stream和优惠券coupon/秒杀/抢红包等系统设
    1、印象中从2017年开始抖音火了,直接带动了视频流这种UGC的火爆,江湖传闻抖音的DAU和平均用户时长已经超过了wechat,实现了弯道超车,实在是后生可畏!对于这种视频站点,可能的......
  • Filter拦截浏览器请求资源、Filter多个过滤器
    Filter拦截浏览器请求资源Filter拦截浏览器请求资源注解配置:*设置dispatcherTypes属性1.REQUEST:默认值。浏览器直接请求资源2.FORWARD:转发访问资源3.INCLUDE:包含访......
  • springMvc32-原生apiSpring MVC过滤器-HiddenHttpMethodFilter
    浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过......
  • Filter过滤器拦截路径配置
    Filter过滤器拦截路径配置过滤器拦截路径配置:拦截路径配置:具体的资源路径;/index.jsp,只有访问这个Index.jsp才会执行拦截目录:/user/* 访问这个......
  • 过滤器Filter、Filter快速入门
    过滤器Filter 生活中的过滤器:净水器,空气净化器,土匪web中的过滤器:当访问服务器的资源的时,过滤器可以将请求拦截下来,完成一些特殊性的功能过滤器的作用:一般用于完成......