使用Java8流重写

使用Java8流重写,java,java-8,iteration,java-stream,for-loop,Java,Java 8,Iteration,Java Stream,For Loop,嗯,我想知道是否有可能使用流重写下面的代码?如果有人能解释为什么我们可以首先排除溪流 for (int i=0;i<size; i++) { int j = i+1; while (j<size && Math.abs(arr1[j]-arr1[i])<=k ) { if (Math.abs(arr1[j]-arr1[i])==k) { cnt++; } j++;

嗯,我想知道是否有可能使用流重写下面的代码?如果有人能解释为什么我们可以首先排除溪流

for (int i=0;i<size; i++) {
    int j = i+1;
    while (j<size && Math.abs(arr1[j]-arr1[i])<=k ) {
        if (Math.abs(arr1[j]-arr1[i])==k) {
             cnt++;
        }
        j++;
    }
}
for(int i=0;i
问:……了解是否有可能重写

是的,这是可能的,但还是很沮丧。请记着这一点,记住在大多数情况下,这并不是1:1的替代品

问:……为什么我们可以首先排除溪流

流根本不适合索引的重复使用或重复使用。流的概念是monad,适合遍历集合/数组一次,并生成声明的输出

有一种方法可以替代使用索引的数组中的迭代,但是,它不会给解决方案带来真正的好处,而且更详细,清晰度更低。除此之外,我无法想象一个基本上不违反以下关键原则的解决方案:

  • 不干涉
  • 无状态行为
  • 无副作用
典型的使用案例是过滤、展开/映射、缩减、收集到集合或分组到
映射
,使用或不使用聚合操作等。它们也适用于并行处理

问:……了解是否有可能重写

是的,这是可能的,但还是很沮丧。请记着这一点,记住在大多数情况下,这并不是1:1的替代品

问:……为什么我们可以首先排除溪流

流根本不适合索引的重复使用或重复使用。流的概念是monad,适合遍历集合/数组一次,并生成声明的输出

有一种方法可以替代使用索引的数组中的迭代,但是,它不会给解决方案带来真正的好处,而且更详细,清晰度更低。除此之外,我无法想象一个基本上不违反以下关键原则的解决方案:

  • 不干涉
  • 无状态行为
  • 无副作用

典型的用例是过滤、展开/映射、减少、收集到一个集合或分组到一个
映射
,使用或不使用聚合操作等。它们也适用于并行处理。

如果我没有弄错的话,等价的嵌套
for
循环看起来像
for(inti=0;ik{break;}if(Math.abs(arr[j]-arr[i])==k{cnt++;}
我相信streams不是解决问题的方法。但是,你能在这里列出你到底想要实现什么吗?(问题陈述是什么)我的意思是问,在使用streams时,我如何重写并嵌套?投票重新打开,因为这个问题根本不“太广泛”。它显示了“一个具有足够详细信息以确定适当答案的特定问题”。如果您使用java 11,则可以编写nest iterate。@AmitNaikThanks@NgSharma,将检查java 11选项如果我没有错,等效的嵌套
for
循环看起来像
for(int I=0;Ik){break;}if(Math.abs(arr[j]-arr[i])==k){cnt++;}
我相信streams不是解决这个问题的好办法。但是,你能在这里列出你到底想实现什么吗?(问题陈述是什么)我的意思是问,在使用streams时,我如何重写并嵌套?投票重新打开,因为这个问题一点也不“太宽泛”。它表示“一个具有足够详细信息以确定适当答案的特定问题”。如果使用java 11,则可以编写嵌套迭代。@AmitNaikThanks@NgSharma将检查java 11选项