zoukankan      html  css  js  c++  java
  • Java8 Stream 的一些操作和介绍

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11858186.html

    Java8 Stream 是一个新的东西, 就是能够将常见的数据结构转化成Stream, 再直接用这个Stream来做各种操作, 比如过滤, 大小写转换, 提取某个实体的某个属性, 都可以直接通过Stream的方法来操作, 直接链式编程 , 不需要再进行额外的 new 其他的什么对象等等. 下面直接贴代码介绍一下吧, 不作过多的介绍了, 用一两次就会了.

    package stream8;
    
    import java.util.*;
    import java.util.function.Supplier;
    import java.util.stream.Collectors;
    import java.util.stream.IntStream;
    import java.util.stream.Stream;
    
    /**
     * Stream 的一些操作和介绍
     */
    public class MainStream {
        public static void main(String[] args) {
            /**
             * 转换成Stream的方式
             */
            List<String> strings = new ArrayList<>();
            strings.stream();
            strings.parallelStream();
            /**
             * 转换成Stream的方式
             */
            String[] arrStr = new String[]{"1", "2", "3"};
            Arrays.stream(arrStr);
            Stream.of(strings);
            Stream.of(arrStr);
    
            /**
             * 一个Stream只能使用一次, 下面的用法只是为了演示
             * Stream转换成其他数据结构
             */
            Stream stream = strings.stream();
            stream.toArray();
            stream.collect(Collectors.toList());
            stream.collect(Collectors.toCollection(ArrayList::new));
            stream.collect(Collectors.toSet());
            stream.collect(Collectors.toCollection(Stack::new));
            stream.collect(Collectors.joining()).toString();
    
            /**
             * IntStream的用法
             */
            IntStream.of(new int[]{1, 2, 3}).forEach(System.out::println);
    
            /**
             * Intermediate --> Stream 常见的中间操作, 就是可以一直用 "." 接下去的操作
             */
            stream.map(null);
            stream.mapToInt(null);
            stream.flatMap(null);
            stream.filter(null);
            stream.distinct();
            stream.sorted();
            stream.peek(null);
            stream.limit(0L);
            stream.skip(0L);
            stream.parallel();
            stream.sequential();
            stream.unordered();
            /**
             * Terminal --> Stream的终止操作, 就是当执行完这个操作之后Stream的生命也到此为止了, 也就不能再用 "." 接下去了
             */
            stream.forEach(null);
            stream.forEachOrdered(null);
            stream.toArray();
            stream.reduce(null);
            stream.collect(null);
            stream.min(null);
            stream.max(null);
            stream.count();
            stream.anyMatch(null);
            stream.allMatch(null);
            stream.noneMatch(null);
            stream.findFirst();
            stream.findAny();
            stream.iterator();
            /**
             * Short-circuiting --> 无穷和又穷一些约束下的一些操作
             */
            stream.anyMatch(null);
            stream.allMatch(null);
            stream.noneMatch(null);
            stream.findFirst();
            stream.findAny();
            stream.limit(0L);
    
            /**
             * 自己生成流 : Stream.generate
             */
            Random seed = new Random();
            Supplier<Integer> random = seed::nextInt;
            Stream.generate(random).limit(10).forEach(System.out::println);
            //Another way
            IntStream.generate(() -> (int) (System.nanoTime() % 100)).
                    limit(10).forEach(System.out::println);
        }
    }
  • 相关阅读:
    监控 Linux 性能的 18 个命令行工具
    VS2015中无法查找或打开 PDB 文件
    C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous
    malloc用法
    C语言中i++和++i的区别
    vs未定义的标识符“round”ceil()和floor()
    error C2065: “uint8_t”: 未声明的标识符
    strtol 函数用法
    C++ “string”: 未声明的标识符
    C++ 中c_str()函数
  • 原文地址:https://www.cnblogs.com/fanerwei222/p/11858186.html
Copyright © 2011-2022 走看看