簡體   English   中英

使用Java Stream和Lambda表達式進行嵌套循環

[英]Use java Stream and Lambda expressions for nested loop

我想將以下代碼替換為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())
   }
   }
  }
}

有什么最好的辦法嗎?

您可以這樣做:

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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM