Java 获取、创建 stream 流操作对象的几种方法

Java 获取、创建 stream 流操作对象的几种方法

package com.zhong.streamdemo.createstreamdemo;

import java.util.*;
import java.util.stream.Stream;

/**
 * @ClassName : CreateStream
 * @Description : 创建 stream 操作对象
 * @Author : zhx
 * @Date: 2024-02-08 13:10
 */
public class CreateStream {
    public static void main(String[] args) {
        // 获取 List 对象的 stream 操作对象
        System.out.println("-------------获取 List 对象的 stream 操作对象-------------");
        List<String> arrayList = new ArrayList<>(List.of("小钟", "小王", "王五", "王中王", "大小王", "张三", "李四"));
        Stream<String> listStream = arrayList.stream();
        listStream.forEach(System.out::println);

        // 获取 Set 对象的 stream 操作对象
        System.out.println("-------------获取 Set 对象的 stream 操作对象-------------");
        Set<String> hashSet = new HashSet<>(List.of("小钟", "小王", "王五", "王中王", "大小王", "张三", "李四"));
        Stream<String> setStream = hashSet.stream();
        setStream.forEach(System.out::println);

        // 获取 Map 对象的 stream 操作对象
        System.out.println("-------------获取 Map 对象的 stream 操作对象-------------");
        Map<String, Integer> hashMap = new HashMap<>(Map.of("小钟",1, "小王",2, "王五",3, "王中王",4, "大小王",5, "张三",6, "李四",7));
        // 键 stream 流
        Stream<String> keyStream = hashMap.keySet().stream();
        // 值 stream 流
        Stream<Integer> valueStream = hashMap.values().stream();
        // 整个 stream 流
        Stream<Map.Entry<String, Integer>> mapStream = hashMap.entrySet().stream();
        keyStream.forEach(System.out::println);
        valueStream.forEach(System.out::println);
        mapStream.forEach(System.out::println);

        // 数组创建 stream 流
        System.out.println("-------------数组创建 stream 流-------------");
        String[] names = {"小钟", "小王", "王五", "王中王", "大小王", "张三", "李四"};
        Stream<String> arrStream = Arrays.stream(names);
        arrStream.forEach(System.out::println);

    }
}

在这里插入图片描述

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 Stream 对象的各种方法获取 Stream 中的值。例如,可以使用 forEach() 方法来遍历 Stream 中的每个元素,也可以使用 collect() 方法Stream 转换为集合,然后就可以使用集合的方法获取元素。 例如: ``` List<Integer> list = Stream.of(1, 2, 3, 4, 5) .collect(Collectors.toList()); for (int i : list) { System.out.println(i); } ``` 也可以使用 reduce() 方法Stream 中的元素组合起来,例如将所有数字相加: ``` int sum = Stream.of(1, 2, 3, 4, 5) .reduce(0, (a, b) -> a + b); System.out.println(sum); ``` 还可以使用 findFirst() 方法获取 Stream 中的第一个元素,或者使用 filter() 方法获取符合特定条件的元素。 具体方法使用可以参考 Java Stream 的文档。 ### 回答2: java.util.stream.StreamJava 8引入的一个新的API,用于对集合进行操作和处理。Stream提供了一种优雅、高效且易于使用的方式来处理集合中的数据。 要获取Stream中的值,我们可以通过以下几个步骤: 首先,我们需要创建一个Stream对象。可以通过集合的stream()方法获取一个Stream对象,例如: List<String> list = Arrays.asList("apple", "banana", "orange"); Stream<String> stream = list.stream(); 接下来,我们可以使用Stream对象上的各种操作来处理数据,比如过滤、映射、排序等。例如,我们可以使用filter()方法来过滤出符合条件的数据: Stream<String> filteredStream = stream.filter(s -> s.startsWith("a")); 然后,我们可以使用Stream对象上的终止操作获取Stream中的值。可以使用forEach()方法来迭代处理Stream中的每个元素: filteredStream.forEach(System.out::println); 上述代码会将Stream中以"a"开头的字符串打印出来。 需要注意的是,Stream对象的终止操作是惰性的,也就是说,只有在执行终止操作时才会进行数据处理。在终止操作之后,Stream对象将不再可用,需要重新创建。 通过Stream的这种处理方式,我们可以利用Lambda表达式和函数式编程思想来更加简洁和清晰地处理集合中的数据,提高代码的可读性和维护性。 ### 回答3: java.util.stream.StreamJava 8引入的一个用于处理集合数据的新的抽象概念。它提供了一种类似于水线操作的方式来对集合数据进行处理,可以高效地进行过滤、映射、排序、聚合等各种操作。 要获取Stream中的值,首先需要有一个包含数据的集合,例如一个List。然后可以通过Stream接口中的静态方法of将该集合转换为一个: List<String> list = Arrays.asList("apple", "banana", "orange"); Stream<String> stream = Stream.of(list); 现在我们就可以对这个进行各种操作了。例如,如果我们想要过滤掉长度为5的字符串,可以使用filter方法stream = stream.filter(s -> s.length() != 5); 接下来,如果我们想要将每个字符串都转换为大写形式,可以使用map方法stream = stream.map(String::toUpperCase); 最后,如果我们想要将这些字符串连接起来,并且用逗号分隔,可以使用reduce方法: String result = stream.reduce("", (acc, str) -> acc + ", " + str); 最后,通过toArray方法可以将Stream中的元素转换为一个数组: String[] array = stream.toArray(String[]::new); 另外,也可以通过forEach方法来遍历中的每一个元素,并对每个元素执行一个操作stream.forEach(System.out::println); 总之,通过Java 8中的java.util.stream.Stream,可以方便地对集合数据进行各种处理,从而提高代码的简洁性和可读性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

她似晚风般温柔789

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

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

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

打赏作者

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

抵扣说明:

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

余额充值