Java的stream流操作

stream()简介

stream()方法在接口Collection中,接口定义如下

public interface Collection<E> extends Iterable<E> {
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }
    //接口其它方法
}

绝大部分集合容器都实现了该接口,常用容器如Set、List都实现了Collection接口,以下为List的定义

public interface List<E> extends Collection<E> {
    //接口方法
}

将List转换为Stream:

List<Integer> list= Lists.newArrayList();
list.add(1);
list.add(2);
list.add(3);
Stream<Integer> stream=list.stream();

对应Stream接口,其定义如下:

public interface Stream<T> extends BaseStream<T, Stream<T>> {
    //其它方法
    .....
    //常用方法

    //对流里面对数据进行筛选,符合表达式predicate
    Stream<T> filter(Predicate<? super T> predicate);
    //对流里面对元素进行映射,根据函数对象mapper,将T映射为R
    <R> Stream<R> map(Function<? super T, ? extends R> mapper);
    //对流中对元素进行映射,T映射为Int
    IntStream mapToInt(ToIntFunction<? super T> mapper);
    //T映射为Long
    LongStream mapToLong(ToLongFunction<? super T> mapper);
    //T映射为Double
    DoubleStream mapToDouble(ToDoubleFunction<? super T> mapper);
    //根据自然比较规则,对流中元素排序
    Stream<T> sorted();
    //根据给定对比较器排序
    Stream<T> sorted(Comparator<? super T> comparator);
    //去重
    Stream<T> distinct();
    //对流中元素进行收集,组合成集合
    <R, A> R collect(Collector<? super T, A, R> collector);
    //根据比较规则,返回最小的元素
    Optional<T> min(Comparator<? super T> comparator);
    //根据比较规则,返回最大的元素
    Optional<T> max(Comparator<? super T> comparator);
}

利用stream对List进行排序

List<Integer> array= Lists.newArrayList();
array.add(3);
array.add(8);
array.add(9);
array.add(5);
List<Integer> list=array.stream().sorted(Comparator.comparing(Integer::intValue)).collect(Collectors.toList());
for (Integer integer : list) {
     System.out.println(integer);
}

输出结果为

3
5
8
9
Java StreamJava 8 中引入的一种新的数据处理方式,它可以让你以一种声明式的方式来处理数据集合。Stream API 可以极大地简化 Java 程序的编写工作,使代码更加简洁、清晰,同时也可以提高程序的性能。 下面是 Java Stream 的常用操作: 1. 创建 Stream:可以通过集合、数组、文件等方式创建 Stream。 2. 中间操作:对 Stream 进行转换、过滤等操作,但不会执行任何操作。 3. 终止操作:对 Stream 进行计算、打印等操作,会执行 Stream操作。 4. 聚合操作:对 Stream 进行聚合操作,如求和、求最大值、求平均值等。 下面是一些常用的 Stream 操作示例: 1. 创建 Stream ``` List<String> list = Arrays.asList("Java", "Python", "C++", "JavaScript"); Stream<String> stream = list.stream(); // 通过集合创建 Stream IntStream intStream = IntStream.range(0, 10); // 创建一个 IntStream ``` 2. 中间操作 ``` stream.filter(s -> s.startsWith("J")) // 过滤出以 J 开头的字符串 .map(String::toUpperCase) // 将字符串转为大写 .sorted() // 排序 .distinct() // 去重 .limit(2); // 取前两个元素 ``` 3. 终止操作 ``` stream.forEach(System.out::println); // 遍历打印 Stream 中的元素 stream.count(); // 计算 Stream 中的元素个数 stream.max(String::compareTo); // 找出 Stream 中的最大值 stream.min(String::compareTo); // 找出 Stream 中的最小值 stream.reduce((a, b) -> a + b); // 将 Stream 中的所有元素累加起来 stream.collect(Collectors.toList()); // 将 Stream 转为 List ``` 4. 聚合操作 ``` IntStream intStream = IntStream.of(1, 2, 3, 4, 5); intStream.sum(); // 求和 intStream.average(); // 求平均值 intStream.max(); // 求最大值 intStream.min(); // 求最小值 ``` 这些仅是 Java Stream 的一部分常用操作,还有很多其他的操作方式。通过使用 Stream API,可以大大简化代码的编写,提高程序的性能和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值