【发布时间】:2018-06-16 13:51:16
【问题描述】:
我是 Java 8 流的新手,我无法从嵌套循环运算总和中获得正确的输出。
在嵌套循环中,我调用了一个返回整数的方法;通过这样做最终总结了结果总数
这是我尝试过的:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
public class NestedLoop {
public void callTask(int i, int j) {
System.out.println("i:"+i+"j:"+j);
}
public int getCount(Count count, String j) {
if(count.getCount() >= 123 && count.getCount() <= 125) {
System.out.println("###");
return 1;
}
else {
return 0;
}
}
public static void main(String[] args) {
List<Count> list2 = new ArrayList<>();
List<String> list1 = new ArrayList<>();
Count count = new Count(121);
Count count1 = new Count(122);
Count count2 = new Count(123);
Count count3 = new Count(124);
Count count4 = new Count(125);
list2.add(count4);
list2.add(count2);
list2.add(count3);
list2.add(count1);
list2.add(count);
NestedLoop loop = new NestedLoop();
list1.add("list2 - Op1");
list1.add("list2 - Op2");
list1.add("list2 - Op2");
list1.add("list2 - Op2");
int _count = 0;
IntStream res = list2.parallelStream().flatMapToInt(x -> IntStream.of(list1.stream().mapToInt(y-> loop.getCount(x,y)).sum()));
System.out.println(res.sum());
}
}
Count class
class Count {
private int count;
public Count(int count) {
super();
this.count = count;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
这样,我得到 12 而不是 2。
求助,代码哪里出错了。
【问题讨论】:
-
您的用例是什么?为什么你期望 2 作为结果?
-
@Ravindra,在我的情况下,getCount 是条件基础输出;这就是我添加虚拟条件的原因
-
答案 12 在这里是正确的。请干运行代码看看。
标签: java-8 java-stream