java 流式编程_Java中的流式编程

Java中的流式编程

发布时间:2018-05-26 17:04,

浏览次数:885

, 标签:

Java

!!!!!!!!!注意:这个特效是在Java8之后才引进的  就是说 jdk8之前是没有的一. 基本概念

1.1 为什么加入 集合的流式操作

JDK8 的Stream 是一个受到 函数式编程 和

多核时代影响而产生的东西。很多时候我们需要到底层返回数据,上层再对数据进行遍历,进行一些数据统计,但是之前的Java API

中很少有这种方法,这就需要我们自己来 Iterator 来遍历,如果JDK 能够为我们提供一些这种方法,并且能够为我们优化就好了。

所以JDK8加入 了 java.util.stream包,实现了集合的流式操作,流式操作包括集合的过滤,排序,映射等功能。根据流的操作性,又可以分为

串行流 和 并行流。根据操作返回的结果不同,流式操作又分为中间操作和最终操作。大大方便了我们对于集合的操作。

* 最终操作:返回一特定类型的结果。

* 中间操作:返回流本身。1.2 什么是 流        Stream 不是 集合元素,也不是数据结构,它相当于一个 高级版本的

Iterator,不可以重复遍历里面的数据,像水一样,流过了就一去不复返。它和普通的 Iterator 不同的是,它可以并行遍历,普通的 Iterator

只能是串行,在一个线程中执行。 二. 串行流和并行流:        串行流操作在一个线程中依次完成。并行流在多个线程中完成,主要利用了 JDK7 的

Fork/Join 框架来拆分任务和加速处理。相比串行流,并行流可以很大程度提高程序的效率。 三. 中间操作 和 最终操作        中间操作:

* filter(): 对元素进行过滤

* sorted():对元素排序

* map():元素映射

* distinct():去除重复的元素最终操作:

* forEach():遍历每个元素。

* reduce():把Stream 元素组合起来。例如,字符串拼接,数值的 sum,min,max ,average 都是特殊的 reduce。

* collect():返回一个新的集合。

* min():找到最小值。

* max():找到最大值。

废话不多说 直接上代码:

public static void main(String[] args) { List list = new ArrayList();

list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("d");

list.add("d"); list.add("d"); list.add("d"); list.add("d"); list.add("e");

list.add("f"); list.add("aa"); list.add("faaa"); System.out.println("----

对集合数据的过滤,根据给到的条件筛选过滤----"); list.stream().filter(param -> !param.contains("a"

)).forEach(System.out::println); System.out.println("----对集合数据进行排序,默认的是升序排列----"

); list.stream().sorted().forEach(System.out::println); System.out.println("----

自定义排序方式----");//注:这里是通过 Stream sorted(Comparator super T> comparator); 这个方法

list.stream().sorted((p1,p2) -> p1.hashCode()

).forEach(System.out::println); System.out.println("----对于集合的每个元素可以按照规则变成相应的元素,

这里是把包含a的元素替换成了1,其他的不变----"); list.stream().map(param -> param.contains("a") ? 1

: param).forEach(System.out ::println); System.out.println("----对于集合中重复的数据进行去重,

把相同的数据去除,这里去除了d的重复元素----"); list.stream().distinct().forEach(System.out

::println); System.out.println("----reduce是把集合里的数据组合起来,这里是把所有的元素组合成一个新的字符串----")

; System.out.println(list.stream().reduce((p1,p2) -> p1+p2).get()); System.out

.println("----collect是将原先的集合数据根据给定的条件筛选重新生成一个新的list集合返回----");

list.stream().filter(p -> !p.contains("a")).collect(Collectors.toList

()).forEach(System.out::println); }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值