我是靠谱客的博主 幽默月饼,最近开发中收集的这篇文章主要介绍铂西学习日记---高级Iterator-Stream接口,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是Stream?
Stream是元素的集合,这点让Stream看起来用些类似Iterator;可以支持顺序和并行的对原Stream进行汇聚的操作;
我们可以把Stream当成一个高级版本的Iterator。原始版本的Iterator,用户只能一个一个的遍历元素并对其执行某些操作;高级版本的Stream,用户只要给出需要对其包含的元素执行什么操作,比如“过滤掉长度大于10的字符串”、“获取每个字符串的首字母” 等,具体这些操作如何应用到每个元素上,就给Stream就好了!

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        streamDemo1();
    }
    /**
     * Stream 接口:不是存储数据结构,数据源可以是一个集合,为了函数式编程而被创造,
     * 懒惰式执行,只有真正用到的时候才会使用,数据只能被消费一次,所以特别注意:Stream 流的注意事项:Stream不调用终止方法,中间的操作不会执行。
     *
     * 两种类型的操方法:
     * 1.中间操作(生成一个Stream)
     * 2.结束操作(执行计算操作)
     *
     *
     */
    public static void streamDemo1(){
        /**
         * 获取Stream --- collection(集合)中自带stream()方法返回一个stream对象
         */
//        List<String> list = new ArrayList<>();
//        Stream<String> stream1 = list.stream();
        Stream<String> stream = Stream.of("good","good" ,"study","day","day","up");
        //两个集合转换为一个流
        Stream<List<Integer>> listStream = Stream.of(Arrays.asList(1, 2, 3), Arrays.asList(4, 5));


        /**
         * 遍历
         */
        //foreach方法--结束操作,因为什么也不返回,输出完就无法操作了
//        stream.forEach((str)->System.out.println(str));
//        stream.forEach(System.out::println);

        /**
         * 过滤
         */
        //filter --中间操作,因为返回的还是stream,可以进行进一步的操作,所以可以链式操作
        //Stream<T> filter(Predicate<? super T> predicate); 断言式接口
//        stream.filter((s)->s.length()>3).forEach(System.out::println);

        /**
         * 去重
         */
        //distinct
//        stream.distinct().forEach(s-> System.out.println(s));

        /**
         * 映射(执行操作后再映射)
         */
        //map
//        stream.map(s->s.toUpperCase(Locale.ROOT)).forEach(System.out::println);

        /**
         * 平摊 --- 比如一个流中含有两个集合,一个集合有三个元素,另一个集合有两个元素,通过映射就能平摊为装有一个含5个元素集合的流
         */
        //flatMap
//        listStream.flatMap(list->list.stream()).forEach(s-> System.out.println(s));

        /**
         * 合并流 --- 合并多个元素并产生单个值。
         */
        //reduce -- 求最大值,最小值,所有数相加...,此处为字符串连接,中间用空格连接
//        String s1 = stream.reduce((s, s2) -> s + " " + s2).get();
//        System.out.println(s1);

        /**
         * 收集 --- 当我们对 Stream 流中的数据操作完成之后,如果需要将流的结果进行保存,方便我们接下来对结果的继续操作
         */
        //collect --- 配合 Collectors工具类 转化为集合、数组...
        List<String> collect = stream.collect(Collectors.toList());
        collect.forEach(System.out::println);

        /**
         * 更多方法看API文档
         */

    }


}

 

最后

以上就是幽默月饼为你收集整理的铂西学习日记---高级Iterator-Stream接口的全部内容,希望文章能够帮你解决铂西学习日记---高级Iterator-Stream接口所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部