【Java基础】java流处理小结

在 Java 中,Stream 是处理集合数据的抽象概念。Stream 提供了一种在一组数据集合上进行声明式操作的方法。Stream API 支持串行和并行处理。

以下是 Stream 的主要种类及用法介绍:

1. 基本 Stream 接口

  • Stream<T> 通用的泛型接口,适用于任意引用类型。
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();

2. IntStreamLongStreamDoubleStream

  • IntStream 用于处理基本类型 int 的流。
IntStream intStream = IntStream.range(1, 5);
  • LongStream 用于处理基本类型 long 的流。
LongStream longStream = LongStream.range(1, 5);
  • DoubleStream 用于处理基本类型 double 的流。
DoubleStream doubleStream = DoubleStream.of(1.0, 2.0, 3.0);

3. Stream 的创建方式

  • 通过集合创建:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
  • 通过数组创建:
String[] array = {"a", "b", "c"};
Stream<String> streamFromArray = Arrays.stream(array);
  • 通过Stream.of()创建:
Stream<String> streamOfValues = Stream.of("a", "b", "c");
  • 使用 Stream.iterate() 创建无限流:
Stream.iterate(0, n -> n + 2).limit(5).forEach(System.out::println);

4. Stream 的中间操作

  • filter 用于过滤元素。
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
  • map 用于对每个元素应用一个函数。
List<Integer> lengths = list.stream().map(String::length).collect(Collectors.toList());
  • sorted 用于对流进行排序。
List<String> sortedList = list.stream().sorted().collect(Collectors.toList());
  • distinct 用于去重。
List<String> distinctList = list.stream().distinct().collect(Collectors.toList());

5. Stream 的终端操作

  • collect 将流中的元素收集到一个集合中。
List<String> collectedList = list.stream().collect(Collectors.toList());
  • forEach 对流中的每个元素执行指定操作。
list.stream().forEach(System.out::println);
  • reduce 根据给定的规约函数对流的元素进行处理。
Optional<String> concatenated = list.stream().reduce((s1, s2) -> s1 + s2);
  • count 返回流中元素的数量。
long count = list.stream().count();
  • **match:**用于检查流中的元素是否满足指定的条件。
    有三个相关的操作:
    allMatch:检查是否所有元素都满足条件。
    anyMatch:检查是否至少有一个元素满足条件。
    noneMatch:检查是否所有元素都不满足条件。

6. Stream的并行处理

流可以很容易地切换为并行流以提高处理速度。例如:

List<Integer> parallelSquaredNumbers = numbers.parallelStream()
        .filter(n -> n % 2 == 0)
        .map(n -> n * n)
        .collect(Collectors.toList());
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值