java 8之Stream Api解析

流操作之中间操作简介

中间操作主要是用来对Stream做出相应转换及限制流,实际上是将源Stream转换为一个新的Stream,以达到需求效果。

常用中间操作方法

操作类型返回类型操作参数函数描述符作用
filter中间StreamPredicateT -> boolean返回参数函数为true的元素的流
map中间StreamFunction<T, R>T -> R参数函数会被应用到每个元素上,并将其映射成一个新的元素
flatMap中间StreamFunction<T, R>T -> Rflatmap 方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流。
limit中间Stream返回前n个元素的流
skip中间Stream返回一个跳过前n个元素的流(不足n个元素,返回一个空流)
sorted中间StreamComparator(T, T) -> int按照传入的Comparator安排续
distinct中间Stream根据流所生成元素的hashCode 和 equals 方法,实现去重后的流

filter方法

使用实例:遍历出相同的字符串

 Stream.of("a", "a", "b")
                .filter((s) -> s.startsWith("a"))
                .forEach(System.out::println);
  //return:"a","a"
复制代码

map方法

类似的有:mapToDouble,mapToInt,mapToLong。 使用实例:求和处理

Stream.of(1, 1, 1)
               .mapToInt(Integer::intValue)
               .sum();
       //return:3
复制代码
Long l=Stream.of(1L,2L,4L)
                .mapToLong(Long::longValue)
                .sum();
//return:7
复制代码

flatMap方法

使用实例: 给 定 单 词 列 表"Hello","World" ,你想要返回列表 "H","e","l", "o","W","r","d" ,做法就是先分割,在去重,返回字符串数组。

  List<String> uniqueCharacters =
                Stream.of("heelo","adafa")
                        .map(w -> w.split(""))
                        .flatMap(Arrays::stream)
                        .distinct()
                        .collect(Collectors.toList());
复制代码

limit方法和skip方法

使用实例:取前n个元素

 Stream.of(1, 2, 3, 4, 5)
	   .limit(3)
	    .forEach(i -> System.out.println(i));
//return 1,2,3
复制代码

使用实例:跳过前3个元素

 Stream.of(1, 2, 3, 4, 5)
	   .skip(3)
	    .forEach(System.out::println);
//return 4,5
复制代码

distinct方法

使用实例:去重操作

Stream.of("a", "b", "c", "c")
                .distinct()
                .forEach(System.out::println);
 //return:a,b,c
复制代码

转载于:https://juejin.im/post/5be7f63a518825170d1a994d

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值