Stream流学习

使用步骤:

1. 创建Stream流

Stream流可以通过多种方式创建,主要包括以下几种:

  • 通过集合(Collection)
    • 使用Collection接口中的stream()方法获取顺序流,如List<String> list = new ArrayList<>(); Stream<String> stream = list.stream();
    • 使用Collection接口中的parallelStream()方法获取并行流,如Stream<String> parallelStream = list.parallelStream();
  • 通过数组(Array)
    • 使用Arrays类的stream(T[] array)静态方法,如String[] array = {"a", "b", "c"}; Stream<String> stream = Arrays.stream(array);
  • 通过Stream接口的静态方法
    • 使用Stream.of(T... values)方法,如Stream<String> stream = Stream.of("a", "b", "c");
    • 使用Stream.iterate(T seed, UnaryOperator<T> f)Stream.generate(Supplier<T> s)方法创建无限流,但通常需要通过limit()等方法限制其长度。
  • 其他方式
    • 通过文件、网络输入流等创建Stream流,如使用Files.lines(Path path)方法读取文件行。

2. 中间操作链

中间操作是对Stream流进行处理的步骤,它们会返回一个新的Stream流,而不会立即执行处理。中间操作可以连接多个,形成一个操作链。常见的中间操作包括:

  • filter(Predicate<? super T> predicate):过滤流中的元素。
  • map(Function<? super T, ? extends R> mapper):对流中的每个元素应用给定的函数,并将其结果作为新的流中的元素。
  • sorted():对流中的元素进行排序(自然排序或自定义排序)。
  • limit(long maxSize):限制流中元素的数量。
  • skip(long n):跳过流中的前n个元素。
  • distinct():去除流中的重复元素(基于元素的hashCode()equals()方法)。

3. 终止操作

终止操作会触发前面所有中间操作的执行,并产生一个结果或副作用。终止操作之后,Stream流将不能再被使用。常见的终止操作包括:

  • forEach(Consumer<? super T> action):对流中的每个元素执行给定的操作。
  • collect(Collectors.toList()):将流中的元素收集到List中。
  • min(Comparator<? super T> comparator)max(Comparator<? super T> comparator):根据给定的比较器找到流中的最小或最大元素。
  • count():返回流中的元素数量。
  • reduce(BinaryOperator<T> accumulator):通过归约操作将流中的所有元素组合起来,得到一个值。

总结:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值