Java 8 Stream

2 篇文章 0 订阅

前言

Stream是Java8的另一大亮点,是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的 聚合操作(aggregate operation)或者大批量数据操作;

准备

流和管道的概念:
Stream 以一种流式风格来处理数据;
这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。
类似的有Linux的管道 “|”;
例如

ps -ef | grep 9400

后者的操作依赖与前者的结果;

Lambda表达式
Stream API的设计基于函数式编程和lambda表达式,想要更全面的了解stream,必须掌握Lambda表达式的基础概念及用法;

Stream能带来什么

在未出现Stream API之前,我们在Java当中对数据的数据方式是十分匮乏的;
无非for-each遍历,或者iterate迭代遍历;
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 中数据的处理。
同时,Stream API与Lambda表达式结合,让写出的代码更加高效、干净、简洁。

Stream和集合

集合关注的是数据的存储,stream关注的是数据的处理;
stream不是取代集合,而是对Java数据集的补充;解决集合难以做到的事情;

Stream(流)的创建

1、创建一个空流

	Stream<Object> empty = Stream.empty();

2、list转换成流

	List<String> strings = Arrays.asList("1", "2");
	Stream<String> stream = strings.stream();

Java 8 之后,Collection接口新增了stream()的默认方法,提供集合转化为流的支持;

3、数组转换为流
Stream.of()方法接收多个参数,生成Stream对象;

Stream<String> a = Stream.of("a", "b", "c");

4、builder

     Stream<String> builder = Stream.<String>builder().add("a").add("b").build();

5、generate

  public void createStreamByGenerator() {
        
        Stream<Integer> generate = Stream.generate(new Random()::nextInt).limit(10);
    }

generate会根据传入的Supplier生成无穷序列;
可用limit(int)限制生成的数量;
常用于生成随机数;

6、iterate

public void createStreamByIterate() {
        Stream<Integer> limit = Stream.iterate(10, n -> n + 2).limit(10);
        limit.forEach((element )-> System.out.println(element));
    }

iterate同样会生成无限序列,根据传入的seed,和UnaryOperator;和UnaryOperator将会执行f(seed),f(f(seed)),f(f(f(seed)))…

7、create file stream

public void createFileStream() throws IOException {
        Path path = Paths.get("content.txt");
        Stream<String> lines = Files.lines(path);
    }

Stream(流)的操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值