使用传统方式遍历集合过滤元素和使用流遍历集合过滤元素的区别

  • 使用传统的方式,遍历集合,对集合中的数据进行过滤
java 复制代码
package com.csdn.stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo01List {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        Collections.addAll(list, "张无忌", "周芷若", "赵敏", "张强", "张三丰");

        //对list集合中的元素进行过滤,只要以张开头的元素,存储到一个新的集合中
        List<String> listA = new ArrayList<>();
        for (String s : list) {
            if (s.startsWith("张")) {
                listA.add(s);
            }
        }
        //对listA集合进行过滤,只要姓名长度为3的人,存储到一个新集合中
        List<String> listB = new ArrayList<>();
        for (String s : listA) {
            if (s.length()==3) {
                listB.add(s);
            }
        }

        //遍历listB集合
        for (String s : listB) {
            System.out.print(s+"\t");//张无忌	张三丰
        }
    }
}
  • 使用Stream流的方式,遍历集合,对集合中的数据进行过滤
  • Stream流是JDK1.8之后出现的,关注的是做什么,而不是怎么做
java 复制代码
package com.csdn.stream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo02Stream {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        Collections.addAll(list, "张无忌", "周芷若", "赵敏", "张强", "张三丰");

        //对list集合中的元素进行过滤,只要以张开头的元素,存储到一个新的集合中
        //对listA集合进行过滤,只要姓名长度为3的人,存储到一个新集合中
        //遍历listB集合

//        list.stream().filter(name -> name.startsWith("张"))
//                .filter(name -> name.length() == 3)
//                .forEach(name -> System.out.println(name));

        list.stream().filter(name -> name.startsWith("张"))
                .filter(name -> name.length() == 3)
                .forEach(System.out::println);
//                                                张无忌
//                                                张三丰


    }
}
相关推荐
杀死那个蝈坦8 小时前
监听 Canal
java·前端·eclipse·kotlin·bootstrap·html·lua
笃行客从不躺平8 小时前
认识 Java 中的锁升级机制
java·开发语言
weixin_307779138 小时前
Jenkins Branch API插件详解:多分支项目管理的核心引擎
java·运维·开发语言·架构·jenkins
milanyangbo8 小时前
从硬盘I/O到网络传输:Kafka与RocketMQ读写模型及零拷贝技术深度对比
java·网络·分布式·架构·kafka·rocketmq
小股虫8 小时前
消息中间件关键技术、设计原理与实现架构总纲
java·开发语言·架构
风萧萧19998 小时前
Java:PPT转图片
java·python·powerpoint
洲星河ZXH8 小时前
Java,日期时间API
java·开发语言·python
老华带你飞8 小时前
动物救助|流浪狗救助|基于Springboot+vue的流浪狗救助平台设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·流浪动物救助平台
Hernon8 小时前
微服务架构设计:从零打造互联网车贷系统 —— 业务背景与架构蓝图
java·微服务·架构·微服务架构设计
952368 小时前
二叉平衡树
java·数据结构·学习·算法