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

  • 使用传统的方式,遍历集合,对集合中的数据进行过滤
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);
//                                                张无忌
//                                                张三丰


    }
}
相关推荐
qq_336313938 分钟前
javaweb-Maven
java·maven
Sayuanni%38 分钟前
数据结构_Map和Set
java·数据结构
Demon_Hao9 分钟前
Spring Boot开启虚拟线程ScopedValue上下文传递
java·spring boot·后端
野犬寒鸦17 分钟前
从零起步学习并发编程 || 第三章:JMM(Java内存模型)详解及对比剖析
java·服务器·开发语言·分布式·后端·学习·spring
一勺菠萝丶20 分钟前
Jenkins 构建日志出现 `[INFO]` 乱码?原因与完整解决方案(小白必看)
java·servlet·jenkins
C雨后彩虹24 分钟前
CAS 在 Java 并发工具中的应用
java·多线程·并发·cas·异步·
范纹杉想快点毕业34 分钟前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
2501_9403152639 分钟前
【无标题】2390:从字符串中移除*
java·开发语言·算法
半聋半瞎43 分钟前
Flowable快速入门(Spring Boot整合版)
java·spring boot·后端·flowable
散峰而望1 小时前
【算法竞赛】树
java·数据结构·c++·算法·leetcode·贪心算法·推荐算法