java基础之Stream流

本文详细介绍了Java中的Stream流,从体验Stream流开始,阐述了Stream的生成方式、常见中间操作方法如filter和map,以及终结操作如forEach和count。通过实例展示了如何在集合中进行高效的数据过滤和处理,最后探讨了Stream的收集操作,包括toList、toSet和toMap。通过本文,读者将全面了解Stream流的使用方法。
摘要由CSDN通过智能技术生成

目录

1. 体验Stream流

2. Stream流的生成方式

3. Stream流的常见中间操作方法

4. Stream流中的常见终结操作方法

5. Stream流的练习

6. Stream流的收集操作


1. 体验Stream流

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

  • 创建一个集合,存储多个字符串元素
  • 把集合中所有以“张”开头的元素存储到一个新的集合
  • 把“张”开头的集合中的长度为3的元素存储到一个新的集合
  • 遍历上一步得到的集合

使用Stream流的方式完成过滤操作

  • list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out::println);
  • 直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:生成流、过滤姓张、过滤长度为3、逐一打印

实例:

public class StreamTest {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();

        list.add("张曼玉");
        list.add("周星驰");
        list.add("刘德华");
        list.add("张敏");
        list.add("张无忌");

        ArrayList<String> zhanglist = new ArrayList<>();

        for (String s :
                list) {
            if (s.startsWith("张")) {
                zhanglist.add(s);
            }
        }

        ArrayList<String> threelist = new ArrayList<>();

        for (String s :
                zhanglist) {
            if(s.length() == 3) {
                threelist.add(s);
            }
        }

        for (String s :
                threelist) {
            System.out.println(s);
        }
        System.out.println("------");

        //Stream流改进
        list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out::println);
    }
}

控制台输出:

2. Stream流的生成方式

stream流的使用

  • 生成流

                通过数据源(集合,数组等)生成流

list.stream()

  • 中间操作

                一个流后面可以跟随零个或多个中间操作,其目的主要是打开流,做出某种程度的数据过滤/映射,然后返回一个新的流,交给下一个操作

                filter()

  • 终结操作

                一个流只能有一个终结操作,当这个操作执行后,流就被使用完毕了,无法再被操作。所以这必定是流的最后一个操作forEach()

 

Stream流的常见生成方式

  • Collection体系的集合可以使用默认方法stream()生成流:default Stream<E> stream()
  • Map即系的集合简洁的生成流
  • 数组可以通过Stream接口的静态方法of(T...values)生成流

实例:

public class StreamTest {
    public static void main(String[] args) {
        //Collection体系的集合可以使用默认方式stream()生成流
        List<String> list = new ArrayList<String>();
        Stream<String> listStream = list.stream();
        
        Set<String> set = new HashSet<String>();
        Stream<String> setStream = set.stream
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再让我学一会吧!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值