Stream流的学习

本文详细介绍了Java Stream流的使用,包括如何生成流、常用中间操作(filter、limit、skip、distinct、sorted等)以及终结操作(forEach、count等)。通过实例演示了如何使用Stream处理集合数据,实现高效的数据过滤和转换。同时,文章也展示了Stream流在实际问题中的应用,如筛选特定条件的演员并创建演员对象。
摘要由CSDN通过智能技术生成

1.Stream流

1.1体验Stream流

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

把集合中所有以“张”开头的何元素存储在到一个新的集合

把“张”开头的集合中长度为3的元素存储到一个新的集合

遍历上一步的到的集合

public class StreamDemo {
    public static void main(String[] args) {
       /*需求:创建一个集合,存储多个字符串元素
        把集合中所有以“张”开头的何元素存储在到一个新的集合
        把“张”开头的集合中长度为3的元素存储到一个新的集合
        遍历上一步的到的集合*/
        ArrayList<String> list = new ArrayList<>();
        list.add("林青霞");
        list.add("张曼玉");
        list.add("王祖贤");
        list.add("柳岩");
        list.add("张敏");
        list.add("张无忌");
        //把“张”开头的集合中长度为3的元素存储到一个新的集合
        ArrayList<String> arrayList = new ArrayList<>();
        for (String s : list) {
            if(s.startsWith("张") && s.length()==3){
                arrayList.add(s);
                System.out.println(s);
            }
        }
        System.out.println("---------------");
        //使用流Stream来改进
        //list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(s-> System.out.println(s));
        list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);
    }
}

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

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

直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:生成流,过滤姓张,过滤长度为3,逐一打印

Stream流把真正的函数式编程风格引入到java中

1.2Stream流的生成方式

Stream流的使用

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

list.stream()

中间操作

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

filter()

终结操作

一个流只能有一个中介操作,当这个操作执行后,流就被使用“光了”,无法再被操作。所以这必定是流的最后一个操作

forEach()

Stream流的常见的生成方式

Collection体系的集合可以使用默认方法stream()生成流:default Stream<E> stream()

Map体系的集合间接的生成流

数组可以通过Stream接口的静态方法of(T...values)生成流

public class StreamDemo1 {
    public static void main(String[] args) {
        /*
        * Stream流的常见的生成方式
        Collection体系的集合可以使用默认方法stream()生成流:default Stream<E> stream()
        Map体系的集合间接的生成流
        数组可以通过Stream接口的静态方法of(T...values)生成流*/
        ArrayList<String> list = new ArrayList<>();
        Stream<String> listStream = list.stream();

        HashSet<String> set = new HashS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值