java 流计算_JAVA流式计算

JAVA流式计算

流的简单介绍

Java 8 中,引入了流(Stream)的概念,利用提供的Stream API,我们可以方便的操作集合数据,这种方式很类似于使用SQL对数据库的操作。

如何生成流

利用Stream API,首先我们需要生成流,以下是生成流的常用方式(这里我们只介绍顺序流):

1、所有继承自Collection的接口都可以直接转化为流:

List l1 = Arrays.asList(1, 2, 3, 4, 5);

Stream stream = l1.stream();

Map s1 = new HashMap<>();

Stream> stream1 = s1.entrySet().stream();

2、利用Arrays类中的stream()方法:

Integer[] i1 = new Integer[]{1,2,3,4,5};

Stream stream = Arrays.stream(i1);

3、使用Stream类中的静态方法:

Stream stream = Stream.of(1,2,3,4,5);

4、利用BufferedReader读取文本中的内容转化为流:

BufferedReader reader = new BufferedReader(new FileReader("D:\\stream.txt"));

Stream stream = reader.lines();

我们经常使用的还是方式1,将集合转化为流。

如何操作流

流的主要操作有筛选/切片/查找/匹配/映射/归约

操作流的方法简介

操作流的方法分为两类,一类是惰性求值,一类是及早求值;

惰性求值并不是立刻执行的,而是将求值的过程记录下,在进行及早求值的时候,才会按顺序执行前面的惰性求值,一般的执行过程如下:

Stream.惰性求值.惰性求值. ... .惰性求值.及早求值

区分是惰性求值还是及早求值,可以通过方法的返回值来判断,返回值时Stream类型的就是惰性求值

在介绍如何通过Stream API对流进行操作前,我们首先了解下函数式接口的相关知识(后面介绍的Stream API中会使用到这些函数式接口),这里只作简单介绍。

函数式接口

所谓函数式接口,是指只含有一个抽象方法的接口,一般加@FunctionalInterface注解加以标注,函数式接口可以被隐式地转化为Lamada表达式;

这里我们主要介绍了java.util.function包下的四个常用的函数式接口:

接口

方法

简介

Consumer

void accept(T t)

消费接口,接收一个T类型的对象

Supplier

T get()

供给接口,返回一个T类型的对象

Function

R apply(T t)

映射接口,接收一个T类类型的对象转换为R类型的对象

Predicate

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值