java8流库_详解java8中的Stream数据流

详解java8中的Stream数据流

发布于 2020-3-27|

复制链接

Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。接下来通过本文给大家分享java8中的Stream数据流知识,感兴趣的朋友一起看看吧

Stream是java8引入的一个重度使用lambda表达式的API。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。直观意味着开发者在写代码时只需关注他们想要的结果是什么而无需关注实现结果的具体方式。这一章节中,我们将介绍为什么我们需要一种新的数据处理API、Collection和Stream的不同之处以及如何将StreamAPI应用到我们的编码中。筛选重复的元素Stream 接口支持 distinct 的方法, 它会返回一个元素(根据流所生成元素的 hashCode和equals方法实现)的流。例如,以下代码会筛选出列表中所有的偶数,并确保没有 重复。

```java

List dishes = Dish.menu.stream()

.filter(Dish::isVegetarian)

.collect(Collectors.toList());

```

跳过指定数量的元素Stream 支持 skip(n) 方法,返回一个扔掉了前n个元素的流。如果流中元素不足n个,则返回一 个空流。limit(n) 和 skip(n) 是互补的

```java

List dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2个元素后返回

.collect(Collectors.toList());

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

```

map 操作Stream 支持 map 方法,它会接受一个函数作为参数。这个函数会被应用到每个元素上,并将其映 射成一个新的元素

```java

List list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());

```

元素求和

```java

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

int sum1 = numbers.stream().reduce(0,(a, b) -> a + b);

System.out.println(sum1);

int sum2 = numbers.stream().reduce(0,Integer::sum);

System.out.println(sum2);

```

最大值

```java

int max = numbers.stream().reduce(0,Integer::max);

System.out.println(max);

```

最小值

```java

//reduce不接受初始值,返回一个Optional对象(考虑流中没有任何元素的情况)

Optional min = numbers.stream().reduce(Integer::min);

min.ifPresent(System.out::println);

```

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值