每天睡觉前30分钟阅读_day2_Java流_fliter_map_flatmap

stream中的三个方法:

  • filter : 传入处理的条件,返回所有满足条件的流。可以采用 .count() 方法进行计数。
  • map : 产生一个流。包含将mapper应用于当前流中所有元素所产生的结果如处理同样流[[“a”,“b”],[“c”,“d”]]
  • flatmap :应用于将当前流中所有元素产生的结果连接到一起。 如上:结果为: [“a”,“b”,“c”,“d”]

注意:调用map方法时,传入的是字符串,而调用flatMap() 方法时,传入的是流(stream),这一点要注意。

流的转换会产生一个新的流,他的元素派生自另一个流中的元素,下边程序演示如何用三个方法进行派生演化成新流的过程。

/**
 * @Author Janson
 * @Date 2022/4/17 10:20
 * @Version 1.0
 */

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * stream中的三个方法
 * filter
 * map
 * flatmap 
 */
public class Day2Stream_filter_map_flatmap {
    public static void main(String[] args) throws IOException {
        String contents = new String(Files.readAllBytes(Paths.get("testData/longWord")), StandardCharsets.UTF_8);
        String[] strings = contents.split("\\PL+");
        //数组转换为流形式进行,处理
        Stream<String> words = Arrays.stream(strings);

        //filter测试
        //Stream<String> stringStream = words.filter(word -> word.length() >= 12);
        //stringStream.forEach(word -> System.out.println("输出流处理后,长度大于等于12的单词"+ word));
        //stringStream.close();
        //long count =  words.filter(word -> word.length() >= 12).count();
        //System.out.println("单词长度大于等于12的个数 :" + count);

        //map方法,转为大写
        Stream<String> stringStreamMap = words.map(word -> word.toUpperCase());
        stringStreamMap.forEach(word -> System.out.println("map处理:"+ word));

        List lists = new ArrayList();
        lists.add("abcd");
        lists.add("efgh");
        lists.add("lmjg");
        lists.add("opqw");
        //flatMap测试,应用于将当前流中所有元素产生的结果连接到一起
        Stream streams = lists.stream().flatMap(list -> letter((String) list));
        streams.forEach(word -> System.out.println(word));

        //map测试:产生一个流。包含将mapper应用于当前流中所有元素所产生的结果
        Stream stream = lists.stream().map(list -> {
            String s = (String) list;
            s.substring(0, 1);
            return s;
        });
        stream.forEach(word -> System.out.println(word));

    }

    public static Stream letter(String list){
        List result = new ArrayList();
        for (int i = 0; i < list.length(); i++) {
            result.add(list.substring(i,i+1));
        }
        return result.stream();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Janson666

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

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

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

打赏作者

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

抵扣说明:

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

余额充值