java中stream流中间操作常用api

在 Java 中,Stream 的中间操作用于对 Stream 中的元素进行处理、转换或筛选,但是它们不会触发 Stream 的处理。相反,它们会返回一个新的 Stream 对象,允许你在其后继续进行其他中间操作或终端操作。下面是一些常见的中间操作及其作用:

filter(Predicate):根据指定的条件过滤 Stream 中的元素,只保留满足条件的元素。

javaCopy codeList<String> fruits = Arrays.asList("apple", "banana", "cherry", "apricot", "blueberry");
List<String> filteredFruits = fruits.stream()
                                    .filter(fruit -> fruit.startsWith("a"))
                                    .collect(Collectors.toList());
// 结果:["apple", "apricot"]

map(Function):将 Stream 中的每个元素映射成另一个元素,可以是相同类型或不同类型的映射。

javaCopy codeList<Integer> lengths = fruits.stream()
                                .map(String::length)
                                .collect(Collectors.toList());
// 结果:[5, 6, 6, 7, 9]

flatMap(Function):将 Stream 中的每个元素映射成一个 Stream,然后将这些 Stream 合并成一个新的 Stream。

javaCopy codeList<String> words = Arrays.asList("hello", "world");
List<String> uniqueLetters = words.stream()
                                    .flatMap(word -> Arrays.stream(word.split("")))
                                    .distinct()
                                    .collect(Collectors.toList());
// 结果:["h", "e", "l", "o", "w", "r", "d"]

sorted(Comparator):对 Stream 中的元素进行排序,默认按照自然顺序排序,也可以传入自定义的比较器。

javaCopy codeList<String> sortedFruits = fruits.stream()
                                    .sorted()
                                    .collect(Collectors.toList());
// 结果:["apple", "apricot", "banana", "blueberry", "cherry"]

distinct():去除 Stream 中重复的元素。

javaCopy codeList<String> distinctFruits = fruits.stream()
                                        .distinct()
                                        .collect(Collectors.toList());
// 结果:["apple", "banana", "cherry", "apricot", "blueberry"]

这些中间操作提供了丰富的功能,使得对 Stream 中的元素进行处理、转换或筛选变得非常方便。在中间操作之后,你可以继续链接其他的中间操作或者终端操作来完成更复杂的数据处理任务。

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8Stream API提供了一种新的处理集合的方式,它支持函数式编程,可以通过一系列的中间操作来完成对数据的处理,最终通过终止操作返回处理结果。下面是Java 8Stream API常用方法: 1.创建Stream - Stream.of(T... values):将一组任意类型的值转换成Stream。 - Collection.stream():将集合转换成Stream。 - Arrays.stream(T[] array):将数组转换成Stream。 - Stream.generate(Supplier<T> s):生成一个无限长度的Stream。 - Stream.iterate(T seed, UnaryOperator<T> f):生成一个有限长度的Stream。 2.中间操作 - filter(Predicate<T> p):过滤掉不符合条件的元素。 - map(Function<T, R> f):将元素进行转换,产生一个新的Stream。 - flatMap(Function<T, Stream<R>> f):将元素进行扁平化处理。 - distinct():去重,去掉重复的元素。 - sorted():排序,将元素按照自然顺序排序。 - sorted(Comparator<T> c):排序,将元素按照指定的Comparator排序。 - peek(Consumer<T> c):对每个元素执行一些操作,但是不影响操作。 - limit(long maxSize):截取Stream,只包含前maxSize个元素。 - skip(long n):跳过前n个元素。 3.终止操作 - forEach(Consumer<T> c):对Stream的每个元素执行一些操作。 - toArray():将Stream转换成数组。 - reduce(BinaryOperator<T> accumulator):将Stream的所有元素依次执行指定的操作,返回一个Optional对象。 - reduce(T identity, BinaryOperator<T> accumulator):将Stream的所有元素依次执行指定的操作,并且提供一个初始值。 - collect(Collector<T, A, R> collector):将Stream的所有元素收集到一个集合。 - min(Comparator<T> c):返回Stream最小的元素。 - max(Comparator<T> c):返回Stream最大的元素。 - count():返回Stream元素的数量。 - anyMatch(Predicate<T> p):判断是否存在至少一个元素符合条件。 - allMatch(Predicate<T> p):判断是否所有的元素都符合条件。 - noneMatch(Predicate<T> p):判断是否所有的元素都不符合条件。 - findFirst():返回Stream的第一个元素,如果Stream为空,则返回一个空的Optional对象。 - findAny():返回Stream的任意一个元素,如果Stream为空,则返回一个空的Optional对象。 以上就是Java 8Stream API常用方法。需要注意的是,Stream是一种延迟计算的方式,只有在执行终止操作时才会进行实际的计算。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值