Java进阶DAY26-01-初爽Stream流

Java进阶DAY26-01-初爽Stream流

引言

在Java的世界中,Stream流是处理集合对象的一个强大工具,它可以让我们以声明式的方式处理数据集合。Stream API在Java 8中被引入,提供了一种高效且简洁的方式来操作数据。通过Stream流,我们可以实现对数据的筛选、排序、映射、归约等操作,而这一切都可以以非常直观且链式的方式完成。今天,我们就来初探Stream流的魅力。

Stream流的创建

在深入了解Stream流之前,首先需要知道如何创建一个Stream。Stream流可以通过多种方式创建,下面是一些常见的创建方式:

从集合创建

几乎所有的集合类都提供了stream()方法,通过这个方法可以直接获取到对应集合的Stream对象。

Integer[] numbers = {1, 2, 3, 4, 5};
Stream<Integer> numberStream = Arrays.stream(numbers);
List<String> list = Arrays.asList("Apple", "Banana", "Cherry", "Date");
Stream<String> stream = list.stream();

从数组创建

使用Arrays.stream(Object[])方法,可以从数组直接创建一个Stream。

Integer[] numbers = {1, 2, 3, 4, 5};
Stream<Integer> numberStream = Arrays.stream(numbers);

Stream.of方法

通过Stream.of()方法,可以直接传入多个对象创建Stream。

Stream<Integer> numberStream = Stream.of(1, 2, 3, 4, 5);

Stream流的操作

Stream流的操作大致可以分为中间操作和终端操作两种。中间操作会返回一个新的Stream,可以与其他操作链式调用;终端操作则会结束流的操作,并产生结果。

中间操作

  • filter(Predicate<T>):过滤,根据条件排除某些元素。
  • map(Function<T, R>):映射,将元素转换成其他形式或提取信息。
  • sorted():排序,按自然顺序或自定义Comparator排序。

终端操作

  • forEach(Consumer<T>):迭代流中的每个数据。
  • collect(Collectors):转换成其他形式的数据结构。
  • reduce(BinaryOperator<T>):归约,将流中元素反复结合起来,得到一个值。

实战演练

让我们通过一个实际的例子来感受Stream流的魅力。假设我们有一个用户列表,现在我们想要筛选出年龄大于18的用户,并按年龄升序排序。

List<User> users = Arrays.asList(
    new User("Alice", 20),
    new User("Bob", 17),
    new User("Charlie", 22),
    new User("Dave", 15)
);

List<User> filteredUsers = users.stream()
    .filter(user -> user.getAge() > 18)
    .sorted(Comparator.comparing(User::getAge))
    .collect(Collectors.toList());

filteredUsers.forEach(user -> System.out.println(user.getName()));

结语

Stream流是Java 8中引入的一个强大的API,它以一种声明式的方式让集合操作变得更加简洁和灵活。通过本篇的介绍,希望你能对Stream流有一个初步的了解,并在实际开发中能够运用起来。Stream流的学习是一个循序渐进的过程,今天我们只是初探了Stream流,后续还有更多强大功能等着我们去发现和学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值