ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Stream流中的常用方法foeEach和Stream流中的常用方法filter

2022-07-21 14:01:28  阅读:189  来源: 互联网

标签:常用 Stream stream 流中 filter forEach 方法


延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用。(除了中介方法外,其余方法均为延迟方法)
终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似StringBuilder那样的链式调用。本小节中,终结方法包括count和forEach方法。

逐一处理:forEach

虽然方法名字叫forEach,但是与for循环中的for-each昵称不同
java void forEach(Consumer<? super T> action
该方法接受一个Consumer接口函数,会将每一个流元素交给该函数进行处理。
复习Consumer接口:

java.util.function.Consumer<T>接口是一个消费性接口。
Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据
package com.yang.Test.StreamStudy;

import java.util.stream.Stream;

public class forEachStudy03 {
    public static void main(String[] args) {
        //获取一个Stream流
        Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六", "田七");
        //使用Stream流中方法forEach对Stream流中的数据进行遍历

//        stream.forEach((String name)->{
//            System.out.println(name);
//        });

        stream.forEach(s -> System.out.println(s));

    }
}

Stream流中的常用方法filter

package com.yang.Test.StreamStudy;

import java.util.stream.Stream;

/**
 * Stream流中的常用方法filter:用于对Stream流中的数据进行过滤
 * Stream<T> filter(Predicate<? super T> pred)
 * filter方法的参数Predicate是一个函数式接口,所以可以传递Lambda表达式,对数据进行过滤
 * Predicate中的抽象方法
 * boolean test(T t);
 */
public class FilterStudy04 {
    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张三丰", "张翠山", "赵敏", "周芷若", "张无忌");
        //对Stream流中的元素进行过滤,只要姓张的人
        Stream<String> stream2 = stream.filter((String name) -> {
            return name.startsWith("张");
        });
        //遍历stream2
        stream2.forEach(s -> System.out.println(s));

        //优化写法
//        stream.filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));
    }
}

标签:常用,Stream,stream,流中,filter,forEach,方法
来源: https://www.cnblogs.com/ailhy/p/16501655.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有