初爽Stream流

体验Stream流的作用:

需求:

按照下面的要求完成集合的创建和遍历

创建一个集合,存储多个字符串元素

要求:

1.把所有以"张"开头的元素存储到新集合中

2.把"张"开头的,长度为3的元素再存储到新集合中

3.遍历打印最终结果

解:

未使用Stream流前:
java 复制代码
package com.itheima.a01mystream;
​
import java.util.ArrayList;
​
public class StreamDemo1 {
    public static void main(String[] args) {
        //1.创建集合
        ArrayList<String> list1=new ArrayList<>();
​
        //2.添加元素
        list1.add("张无忌");
        list1.add("周芷若");
        list1.add("赵敏");
        list1.add("张强");
        list1.add("张三丰");
​
        //3.完成要求
         //3.1 把所有以"张"开头的元素存储到新集合中
         ArrayList<String> list2=new ArrayList<>();
         for (String name : list1) {
            if(name.startsWith("张")){ //本例中startsWith方法是找开头为张的进行添加
                list2.add(name);
            }
         }
​
         //3.2 把"张"开头的,长度为3的元素再存储到新集合中
         ArrayList<String> list3=new ArrayList<>();
         for (String name : list2) {
            if(name.length()==3){ //集合list2中已经满足"张"开头,所以只需要判断名字长度即可
                list3.add(name);
            }
         }
​
         //3.3 遍历打印最终结果
         for (String name : list3) {
            System.out.println(name);
         }
        /*运行结果为
           张无忌
           张三丰
         */
​
    }
}
​
使用Stream流后:
java 复制代码
package com.itheima.a01mystream;
​
import java.util.ArrayList;
​
public class StreamDemo1 {
    public static void main(String[] args) {
        //1.创建集合
        ArrayList<String> list1 = new ArrayList<>();
​
        //2.添加元素
        list1.add("张无忌");
        list1.add("周芷若");
        list1.add("赵敏");
        list1.add("张强");
        list1.add("张三丰");
​
        //3.完成要求
        list1.stream().filter(name -> name.startsWith("张")).filter(name -> name.length() == 3).forEach(name -> System.out.println(name));
        /*list1.stream()先获取stream流,
          第一次过滤判断:.filter(name -> name.startsWith("张"))
                  filter里的参数是Lambda表达式,name依次表示每一个姓名,
                  name -> name.startsWith("张")代表只把张开头的姓名留下,其余的过滤掉
          第二次过滤判断:.filter(name -> name.length() == 3)
                  filter里的参数是Lambda表达式,name依次表示每一个姓名,
                  name -> name.length() == 3代表只把长度为3的姓名留下,其余的过滤掉
          .forEach(name -> System.out.println(name));中forEach方法为遍历,参数为Lambda表达式,
          name为姓名,System.out.println(name)代表打印姓名,整体就是依次打印所有姓名
         */
        /*运行结果为
           张无忌
           张三丰
         */
    }
}
​

其中用到了startsWith方法,该方法属于String类:


相关推荐
DianSan_ERP几秒前
架构师视角:电商大促高并发下的订单API限流与防漏单架构演进
java·运维·网络·安全·微服务·架构·自动化
云烟成雨TD2 分钟前
Agent Scope Java 2.x 系列【6】消息层
java·人工智能·agent
云烟成雨TD3 分钟前
Spring AI Alibaba 1.x 系列【74】Agentic RAG 与混合 RAG
java·人工智能·spring
小刘|5 分钟前
Spring AI 结构化输出 + 大模型参数全解(含千问调优)
java·后端·spring
云烟成雨TD6 分钟前
Spring AI Alibaba 1.x 系列【79】图执行生命周期的可观测性基础设施
java·人工智能·spring
霸道流氓气质9 分钟前
Java 单元测试生成大量 Excel 测试数据实战指南
java·单元测试·excel
io无心15 分钟前
基于Image 2的多配件商品图生成技术实现(已开源)
java·image2
javajenius17 分钟前
Pixi:用 Rust 重写 Conda 体验的包管理工具
开发语言·其他·rust·conda
逢君学术论文AI写作18 分钟前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作
神明不懂浪漫18 分钟前
【第二章】Java中的数据类型,运算符与程序逻辑控制
java·开发语言·经验分享·笔记