Java Stream API 面试常见问题解析

1. Java 中的 Stream 是什么?

Java Stream 是一个用于处理数据序列的抽象概念。它并非数据结构,而是提供了一种管道式操作数据的方式,允许以声明式风格进行编程,提高代码可读性和简洁性。

2. 使用 Stream 的优势有哪些?

  • 声明式编程: 代码更简洁易懂,专注于操作而非实现细节。
  • 函数式编程支持: 使用 lambda 表达式,代码更紧凑。
  • 惰性求值: 中间操作仅在需要时执行,提高效率。
  • 并行处理: 轻松实现数据并行处理,提升性能。

3. 常见的 Stream 操作有哪些?

  • filter(Predicate): 根据条件筛选元素。
  • map(Function): 将元素转换为另一种类型。
  • reduce(BinaryOperator): 将元素聚合成单个结果。
  • collect(Collector): 将元素收集到集合中。
  • forEach(Consumer): 对每个元素执行操作。

4. 顺序流和并行流的区别是什么?

  • 顺序流: 在单线程上执行操作。
  • 并行流: 利用多线程并行执行操作,适用于 CPU 密集型任务。

5. 中间操作和终端操作的区别?

  • 中间操作: 返回 Stream 对象,支持链式调用,例如 filter、map。
  • 终端操作: 返回非 Stream 结果,例如 count、collect,触发 Stream 执行。

6. 什么是短路操作?

短路操作是指不一定需要处理所有元素即可返回结果的操作,例如 limit、findFirst、anyMatch。

7. “map” 操作的作用是什么?

“map” 操作使用提供的函数对 Stream 中的每个元素进行转换,并返回一个包含转换后元素的新 Stream。

8. “collect” 终端操作的作用是什么?

“collect” 操作使用 Collector 将 Stream 中的元素累积到结果容器中,例如 List、Set 或 Map。