我想用Streams和lambda表达式替换下面的代码
List < Obj > list=service.getList();
double value = 0.0;
for(int i=0;i<100;i++){
if((i+12)<100){
for(int j=i;j<i + 12 ; j++){
value=1+value*Double.parseDouble(list.get(j).getValue())
}
}
}
}
有没有最好的方法呢?
答案 0 :(得分:2)
你可以这样做:
List<Obj> list = service.getList();
double value = IntStream.range(0, 100 - 12)
.flatMap(i -> IntStream.range(i, i + 12))
.mapToDouble(j -> Double.parseDouble(list.get(j).getValue()))
.reduce(0, (acc, e) -> 1 + acc * e);