Java Stream API

Java Stream API 是 Java 8 引入的一个核心特性,它提供了一种高效、声明式的方式来处理数据集合(如 List、Set)。Stream API 可以让你以声明式方式处理数据集合(通过查询/映射/归约等操作),它关注于做什么而不是怎么做。下面详细介绍 Java Stream API 的一些基本用法。

1. 创建 Stream

  • 从集合创建:可以通过 Collection.stream() 或 Collection.parallelStream() 来获取一个流。
  • 从数组创建:使用 Arrays.stream(T[] array) 或 Stream.of(T... values)
  • 从值创建:使用 Stream.of(T t) 或 Stream.empty()
  • 从文件或生成器:使用 Files.lines(Path path) 或 IntStream.generate(Supplier<Integer> s)

2. 中间操作

中间操作返回一个新的流,并且可以是惰性的(即操作仅在需要结果时才执行)。

  • 过滤filter(Predicate<? super T> predicate)
  • 映射map(Function<? super T, ? extends R> mapper)
  • 排序sorted() 或 sorted(Comparator<? super T> comparator)
  • 去重distinct()
  • 截取limit(long maxSize)
  • 跳过skip(long n)

3. 终端操作

终端操作会处理流并产生结果,一旦调用终端操作,流就会被消费,无法再次使用。

  • 收集collect(Collectors.toList()) 或其他收集器
  • 归约reduce(BinaryOperator<T> accumulator)
  • 匹配anyMatch(Predicate<? super T> predicate)allMatch(Predicate<? super T> predicate)noneMatch(Predicate<? super T> predicate)
  • 查找findFirst()findAny()
  • 迭代forEach(Consumer<? super T> action)
  • 最大值/最小值max(Comparator<? super T> comparator)min(Comparator<? super T> comparator)

4. 并行流

Java Stream API 还支持并行流,允许你利用多核处理器来并行处理数据。你可以通过调用 Collection.parallelStream() 来获取一个并行流。然而,并非所有的操作都能有效地并行化,且并行流可能会引入额外的线程开销。因此,在决定使用并行流之前,你应该评估你的应用场景。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值