2017-02-07 3 views
0

Есть ли способ, чтобы использовать потоки, чтобы написать этот код:индекс Loop в Java 8

for (int i = 0; i < list.size(); i ++) { 
     if (i % 1000 == 0) { 
      doSomething(); 
     } 
     doSomethingElse(list.get(i)); 
    } 

Спасибо!

+2

Вы имели в виду 'doSomethingElse (list.get (i));'? – Bohemian

ответ

2

Для этого вы можете использовать IntStream ... но зачем вам? Он выглядит в основном так же, как и то, что вы написали, но имеет некоторые накладные расходы из-за IntStream, который здесь действительно не нужен.

IntStream.range(0, list.size()) 
     .forEach(i -> { 
      if (i % 1000 == 0) { 
      doSomething(); 
      } 
      doSomethingElse(list.get(i)); 
     }); 

Не зная, что doSomething или doSomethingElse сделать, это трудно сделать лучше предложение. Может быть, вы хотите (или должны?) Разбить свой список заранее?

+0

Вы правы. Я думал, что код будет менее подробным с потоками, но в этом случае нет необходимости использовать тему. Благодаря! – dardy