Java 面试题:Java 流

做好充分的准备对于 Java 流非常重要,因为这是面试官最常问的话题。

无论你是刚入职,还是有 3 年经验,还是有 11 年经验,这都是所有公司最热衷的话题。

流上有两种类型的操作

1. 终结操作

2. 中间操作

请记住,流是一种管道,如果仅应用中间操作,则不会产生任何结果。
仅当应用终结操作时,流才会产生结果。

比如:

中间操作:filter()map()flatMap()distinct()sorted()peek()limit()skip();

终结操作:forEach()collect()reduce()count()min()max()anyMatch()allMatch()noneMatch()findFirst()findAny()。

最重要的问题是告知每个流方法的参数类型。

流可以应用于:

Collections:ListSetMap, etc

Arrays:任何类型的数组 int[],string[]

I/O:文件类 Files.lines()

Generators:Stream.generate()Stream.iterate()

首先了解一下 Java 中的功能接口是什么?

功能接口:

函数式接口是只包含一个抽象方法的接口。这些接口可以使用 lambda 表达式、方法引用或匿名类来实例化。函数式接口是 Java 支持函数式编程的关键部分,尤其是自 Java 8 引入 Stream API 和 lambda 表达式以来。

@FunctionalInterface
interface MyFunctionalInterface {
void doSomething(String input);
}

流中的 foreach 方法内部使用的功能接口是什么?

答案是消费者功能接口,它接受参数但不返回任何内容。

Java 流:

Java 流有两种类型

并行流

顺序流

并行流:

Java 流提供了一种处理元素序列的强大方法,而并行流则允许您同时对这些元素执行操作,从而充分利用多个 CPU 核心

并行流将源数据分成多个部分,并使用多个线程并行处理每个部分。这可以提高大型数据集的性能,尤其是对于 CPU 密集型操作。

并行流中使用的方法

forEach、map、filtercollect、reduce、flatMap

forEach:

Map:

Filter:

Collect:

Reduce:

FlatMap:

顺序流:

在 Java 中,顺序流是流处理的默认类型,其中元素按照它们在源中出现的顺序一次处理一个。顺序流使用简单,适用于许多场景,尤其是当数据集较小或操作不占用大量 CPU 时。

顺序流的特点:

1.单线程

2. 保持处理顺序

3. 简单易懂

顺序流上的操作:

  • 过滤:使用filter基于条件的方法选择元素。
  • 映射:使用map方法对元素进行变换。
  • 收集:使用该collect方法将结果收集到一个集合中。
  • 减少:使用reduce方法来汇总结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值