Java8新特性之Stream的使用

流(Stream)的基本介绍

在这里插入图片描述

Stream的操作步骤
  • 创建Stream
    一个数据源(如:集合、数组),获取一个流
  • 中间操作
    一个中间操作链,对数据源的数据进行处理
  • 终止操作(终端操作)
    一个终止操作,执行中间操作链,并产生结果
    在这里插入图片描述
创建Stream

在这里插入图片描述

public class Demo01 {
   

    List<Person> people = Arrays.asList(
            new Person("A", 24),
            new Person("B", 44),
            new Person("E", 53),
            new Person("C", 53),
            new Person("D", 19));

    @Test
    public void test01() {
   
        // 1. 通过Collection集合提供的stream()
        ArrayList<Object> list = new ArrayList<>();
        Stream<Object> stream = list.stream();
        // 2.通过Arrays中静态方法获取数组流
        int arr[] = {
   1, 2, 3};
        IntStream stream1 = Arrays.stream(arr);
        // 3.通过Stream中的静态方法
        Stream<String> stream2 = Stream.of("aa", "bb", "cc");
        // 4.创建无限流
        // 迭代
        Stream<Integer> stream3 = Stream.iterate(0, (x) -> x + 2);
        stream3.limit(10);
        stream3.forEach(System.out::println);

        // 生成
        Stream.generate(() -> Math.random()).limit(5).forEach(System.out::println);
    }
}
中间操作
1.筛选与切片

在这里插入图片描述

@Test
    public void test02() {
   
        // 内部迭代
        // 中间操作:不会执行任何操作
        Stream<Person> stream = people.stream().
                filter((e) -> e.age > 30);
        // 终止操作:一次性执行全部内容
        stream.forEach(System.out::println);
    }

    @Test
    public void test03() {
   
        people.stream()
                .filter((e) -> e.age > 20)
                // 取前两个
                .limit(2)
                .forEach(System.out::println);
    }

    @Test
    public void test04() {
   
        people.stream()
                .filter((e) -> e.age > 20)
                // 跳过前两个
                .skip(2)
                .forEach(System.out::println);
    }

    @Test
    public void test05() {
   
        people.stream()
                .filter((e) -> e.age > 20)
                .skip(2)
                // 去重
                .distinct()
                .forEach(System.out::println);
    }
2.映射

在这里插入图片描述

@Test
    public
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8引入了Stream API,它是一种新的处理集合的方式,可以用更简洁、更易读的代码处理集合数据。Stream API提供了非常方便的、高效的数据处理方式,包括筛选、排序、映射、归约等。 下面是一些Stream的常用操作: 1. filter():筛选符合条件的元素 ```java List<String> list = Arrays.asList("apple", "orange", "banana", "pear", "peach"); List<String> result = list.stream().filter(str -> str.contains("e")).collect(Collectors.toList()); ``` 2. map():将元素转换成其他形式或提取信息 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); List<Integer> result = nums.stream().map(num -> num * num).collect(Collectors.toList()); ``` 3. sorted():对元素进行排序 ```java List<Integer> nums = Arrays.asList(5, 3, 1, 2, 4); List<Integer> result = nums.stream().sorted().collect(Collectors.toList()); ``` 4. distinct():去重 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 3, 4, 4, 5); List<Integer> result = nums.stream().distinct().collect(Collectors.toList()); ``` 5. limit():截取流中前n个元素 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); List<Integer> result = nums.stream().limit(3).collect(Collectors.toList()); ``` 6. skip():跳过流中前n个元素 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); List<Integer> result = nums.stream().skip(3).collect(Collectors.toList()); ``` 7. reduce():将流中元素归约为一个值 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int result = nums.stream().reduce(0, (a, b) -> a + b); ``` 这些操作只是Stream API中的一部分,还有很多其他操作可以使用Stream API可以让我们更加方便地处理集合数据,提高开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值