Stream流常用方法

        //把集合转换为Stream流
        List<String> list1 = new ArrayList<>();
        Stream<String> stream1 = list1.stream();
        Set<String> set = new HashSet<>();
        Stream<String> stream2 = set.stream();
        //把Map集合转换为Stream流
        Map<String,String> map = new HashMap<>();
        Set<String> keySet = map.keySet();
        Stream<String> stream3 = keySet.stream();
        Collection<String> values = map.values();
        Stream<String> stream4 = values.stream();

        //把数组转换为Stream流
        Stream<Integer> stream5 = Stream.of(1, 2, 3, 4, 5);
        //可变参数先传递给数组
        Integer[] arr = {1,2,3,4,5};
        Stream<Integer> stream6 = Stream.of(arr);

●延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方 法均为延迟方法。)
●终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似StringBuilder那样的链式调用。终结方法包括count和forEach方法…。

Stream流中的常用方法_ forEach

void forEach(Consumer<? super T> action);
该方法接收一个Consumer接口函数,会将每一个流元素交给该函数进行处理。 Consumer接口是一个消费型的函数式接口,可以传递L
ambda表达式,消费数据 简单记: forEach方法,用来遍历流中的数据
是一个终结方法,遍历之后就不能继续调用Stream流中的其他方法

Stream流中的常用方法_ filter

用于对Stream流中的数据进行过滤 Stream filter(Predicate<? super T> predicate);
filter方法的参数Predicate是一个函数式接口,所以可以传递Lambda表达式,对数据进行过滤
Predicate中的抽象方法:boolean test(T t);

注意:

Stream流属于管道流,只能被消费(使用)一次 第一个Stream流调用完毕方法,数据就会流转到下一个Stream上
而这时第一个Stream流已经使用完毕, 就会关闭了 所以第一个Stream流就不能再调用方法了
IllegalStateException: stream has already been operated upon or closed

如果需要将流中的元素映射到另一个流中,可以使用map方法.

<R.>Stream <R.> map(Function<? super T,? extends R> mapper); 该接口需要一个Function函数式接口参数,可以将当前流中的类型数据转换为另一种R类型的流。 Function中的抽象方法: R apply(T t);

Stream流中的常用方法_ count

用于统计Stream流中元素的个数 Long count(); count方法是一个终结方法,返回值是一个long类型的整数
所以不能再继续调用Stream流中的其他方法了

Stream流中的常用方法_ limit

:用于截取流中的元素 limit方法可以对流进行截取,只取用前n个。方法签名: Stream <.T> limit(long maxSize); 参数是一个long型,如果集合当前长度大于参数则进行截取;否则不进行操作
limit方法是一个延迟方法,只是对流中的元素进行截取返回的是一个新的流, 所以可以继续调用Stream流中的其他方法

Stream流中的常用方法skip

: 用于跳过元素 如果希望跳过前几个元素,可以使用skip方法获取一-个截取之后的新流: . Stream<.T> skip(long
n); 如果流的当前长度大于n,则跳过前n个;否则将会得到- -个长度为0的空流。

Stream流中的常用方法_ concat

用于把流组合到一起 如果有两个流,希望合并成为一个流,那么可以使用Stream接口的静态方法concat static <T.>
Stream<T.> concat(Stream<? extends T> a, Stream<? extends T> b)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值