Stream流

发布于:2025-09-04 ⋅ 阅读:(24) ⋅ 点赞:(0)

Stream API  万物皆可一行代码
Stream专门针对集合的各种操作提供各种非常便利,简单,高效的API,
Stream API主要是通过Lambda表达式完成,极大的提高了程序的效率和可读性,
同时Stram API中自带的并行流使得并发处理集合的门槛再次降低,使用Stream API编程无需多写

怎样使用Stream流?

1. 获取流-->  2. 对流进行操作-->3.结束对流的操作

获取流的方式

集合类可通过 Collection.stream()Collection.parallelStream() 获取流;

数组可通过 Arrays.stream(T[] array)Stream.of() 转换。

IO 相关流如 Files.walk()BufferedReader.lines() 也可生成流。


中间操作(Intermediate Operations)

中间操作返回新流,支持链式调用,操作延迟执行(lazy)。

映射操作

  • map:元素一对一转换。
    List<String> names = students.stream()
                               .map(Student::getName)
                               .collect(Collectors.toList());
    
  • flatMap:扁平化多维结构。
    List<String> words = lines.stream()
                            .flatMap(line -> Arrays.stream(line.split(" ")))
                            .collect(Collectors.toList());
    

过滤与去重

  • filter:保留符合谓词的元素。
    List<Student> adults = students.stream()
                                 .filter(s -> s.getAge() > 18)
                                 .collect(Collectors.toList());
    
  • distinct:去除重复元素(依赖 equals 方法)。

排序与裁剪

  • sorted:自然排序或自定义比较器。

在Java流(Stream) API中,sorted方法用于对流中的元素进行排序操作。它支持两种重载形式,可以根据需要选择无参数或传入自定义比较器(Comparator)。下面我将逐步解释其用法,并提供真实可靠的示例代码,帮助您理解如何高效实现排序。

1. 无参数sorted方法
  • 当调用sorted()方法而不传递任何参数时,要求流中的元素必须实现Comparable<T>接口。这适用于元素类已经定义了自然排序顺序的情况。
  • 示例:如果元素类(如S

网站公告

今日签到

点亮在社区的每一天
去签到