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

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


    }
}
相关推荐
爬山算法9 分钟前
Maven(6)如何使用Maven进行项目构建?
java·maven
.生产的驴13 分钟前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛20 分钟前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
吹老师个人app编程教学21 分钟前
详解Java中的BIO、NIO、AIO
java·开发语言·nio
爱学的小涛22 分钟前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪26 分钟前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
琴智冰30 分钟前
SpringBoot
java·数据库·spring boot
binqian30 分钟前
【SpringSecurity】基本流程
java·spring
猿小蔡-Cool1 小时前
CPU 多级缓存
java·spring·缓存
gopher95111 小时前
final,finally,finalize的区别
java·开发语言·jvm