Stream流的这些操作,你得知道,对你工作有很大帮助

Stream流

Stream(流)是一个来自数据源的元素队列并支持聚合操作:

  • 元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而 是按需计算。
  • 数据源 流的来源。 可以是集合,数组等。
  • 聚合操作类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted 等。

Stream流操作的三个步骤:

  1. 创建Stream

    一个数据源(如:集合、数组),获取一个流

  2. 中间操作

    一个中间操作链,对数据源的数据进行处理

  3. 终止操作

    一个终止操作,执行中间操作链,并产生结果

创建Stream步骤:

  • 通过Collection系列集合提供的顺序流stream()或并行流parallelStream()
  • 通过Arrays中的静态方法stream()获取数据流
  • 通过Stream类中的静态方法of()

代码实例

package com.ysh.review01_Stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class StreamTest01 {
    public static void main(String[] args) {
        //第一种方式:通过集合中的stream()方法创建Stream
        List<String> list= Arrays.asList("红太狼","灰太狼","喜羊羊");
        Stream<String> stream=list.stream();
        //通过集合中的parallelStream方法创建
        Stream<String> stream2 = list.parallelStream();
        //第二种方式:通过java.util.Arrays下的静态方法stream创建Stream
        Integer[] integer=new Integer[]{1,2,4};
        //这里需要注意的是Arrays中的stream方法里面的参数需要一个数组,且数组的类型是一个引用类型或者是一个包装类
        Stream<Integer> stream3 = Arrays.stream(integer);
        //第三种方式:通过Stream中的of方法,实际上这种方式创建Stream实际上间接的通过调用Arrays中的stream()静态方法
        Stream<String> stream4=Stream.of("a","b","c");
    }
}

复制代码

Stream的中间操作

筛选和切片

filter:过滤器

package com.ysh.review01_Stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class StramTest02 {
    public static void main(String[] args) {
        Employee employee01=new Employee("yang","hui",29);
        Employee employee02=new Employee("yang","hui",49);
        Employee employee03=new Employee("yang","hui",9);
        Employee employee04=new Employee("yang","hui",89);
        Employee employee05=new Employee("yang","hui",89);
        Employee employee06=new Employee("yang","hui",89);
        List<Employee> list= Arrays.asList(employee01,employee02,employee03,employee04,employee05,employee06);
        //创建Stream
        Stream<Employee> stream1 = list.stream();
        //对stream1流进行过滤
        Stream<Employee> s = stream1.filter((e) -> {
            System.out.println("---------------filter------------");
            //过滤掉年龄小于19
            return e.getAge() >= 19;
        });
        s.forEach((e-> System.out.println(e)));
    }
}
class Employee {
    private String id;
    private String name;
    private int age;

    public Employee() {

    }

    public Employee(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Employee employee = (Employee) o;
        return age == employee.age &&
                id.equals(employee.id) &&am
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的Stream是一个强大的新特性,它提供了一种处理集合数据的方式,可以进行过滤、映射、排序等操作。下面是一些常见的使用方法: 1. 创建一个Stream: - 通过集合创建:`List<String> list = Arrays.asList("apple", "banana", "orange"); Stream<String> stream = list.stream();` - 通过数组创建:`String[] array = {"apple", "banana", "orange"}; Stream<String> stream = Arrays.stream(array);` - 通过Stream.of()方法创建:`Stream<String> stream = Stream.of("apple", "banana", "orange");` 2. 过滤元素: - 使用filter()方法根据条件过滤元素:`stream.filter(e -> e.startsWith("a"))` - 使用distinct()方法去重:`stream.distinct()` 3. 转换元素: - 使用map()方法将元素进行映射:`stream.map(e -> e.toUpperCase())` - 使用flatMap()方法将多个合并成一个:`stream.flatMap(e -> Stream.of(e.split(" ")))` 4. 排序: - 使用sorted()方法对元素进行排序:`stream.sorted()` - 可以传入Comparator自定义排序规则:`stream.sorted(Comparator.comparingInt(String::length))` 5. 终止操作: - 使用forEach()方法遍历元素:`stream.forEach(System.out::println)` - 使用collect()方法将转换为集合或数组:`List<String> result = stream.collect(Collectors.toList())` - 使用reduce()方法将中元素进行规约:`Optional<String> result = stream.reduce((s1, s2) -> s1 + ", " + s2)` 这只是Stream的一部分常见用法,还有很多其他方法可以用于处理集合数据。希望对你有所帮助

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值