Java8 Stream 的一些操作和介绍

Wesley13
• 阅读 663
原创:转载需注明原创地址 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);
    }
}
点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java8新特性
Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str
Wesley13 Wesley13
3年前
JDK1.8 之Stream API总结
Stream是Java8新增加的类,用来补充集合类。Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理(增删改),而Stream并没有提供访问和管理元素的方式,而是通过声明数据源的方式,利用可计算的操作在数据源上执行,当然
Wesley13 Wesley13
3年前
Java8系列之Stream总结
流的简介  官方解释,Stream是Java8的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。它也不同于StAX对XML的解析的Stream,也不是AmazonKinesis对大数据实时处理的Stream。它是对集合对象功能的增强,她专注于对集合对象进行各种非常便利、高效的聚合操作(ag
Wesley13 Wesley13
3年前
Java学习:Stream流式思想
Stream流Java8API添加了一种新的机制——Stream(流)。Stream和IO流不是一回事。流式思想:像生产流水线一样,一个操作接一个操作。使用Stream流的步骤:数据源→转换成流→操作1→操作2→……数据源(source):可以是集合、数组等。St
Wesley13 Wesley13
3年前
JDK8之lambda表达式
/JDK8Stream特性Createdbychengbxon2018/5/27.Java8中的Stream是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregateoperation),或者大批量数据操
Wesley13 Wesley13
3年前
Java 8新特性之Stream 概念
Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI(java.util.stream.\)。Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用StreamAPI对集合数据进行操作,就类似于使用SQL执行
Wesley13 Wesley13
3年前
Java8 新特性之集合操作Stream
Java8新特性之集合操作StreamStream简介Java8引入了全新的StreamAPI。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。
Wesley13 Wesley13
3年前
Java 8 – Filter a null value from a Stream
Java8–FilteranullvaluefromaStreampackagecom.mkyong.java8;importjava.util.List;importjava.util.stream.Collectors;importjava.util.stream.Stream;publiccla
京东云开发者 京东云开发者
10个月前
使用Flink完成流数据统计 | 京东云技术团队
Flink程序构建的基本单元是stream和transformation(DataSet实质上也是stream)。stream是一个中间结果数据,transformation对数据的加工和操作,该操作以一个或多个stream为输入,计算输出一个或多个stream为结果,最后可以sink来存储数据。