Java lambda 表达式最佳实践



Java 流运算符有时会变得非常麻烦且难以调试。是否有关于您的 lambda 表达式应该有多复杂的最佳实践指南,超过该指南最好编写一段精心设计的多语句代码?

例如,我遇到了下面两个用于查找难以理解的阶乘的语句代码:

Stream<Pair> allFactorials = Stream.iterate(
new Pair(BigInteger.ONE, BigInteger.ONE),
x -> new Pair(
x.num.add(BigInteger.ONE),
x.value.multiply(x.num.add(BigInteger.ONE))));
return allFactorials.filter(
(x) -> x.num.equals(num)).findAny().get().value;

Java 流不是灵丹妙药,您不必在任何地方使用它。在很多情况下,您可以使用标准for循环方法解决问题。

至于你的代码..这是一个很好的例子,其中流使代码复杂化并使其难以理解/维护。但仍然很少有解决方案更具可读性。

看一看: 使用 Java 8 IntStream 计算阶乘?

最新更新