Java将for循环转换为lambda表达式

问题描述 投票:0回答:3

我想将以下代码转换为lamda表达式,尤其是以粗体显示的FOR LOOP,从第一个索引开始并跳过下一个索引[i = i + 2]

public static List<Integer>  integerArrayList = Arrays.asList(0, 1, 2, 3, 4, 5, 6);

  Thread oddThread8 = new Thread(() -> {
  List<Integer> integerArrayList = ReadList8Refctor.getIntegerList();
  int listSize = integerArrayList.size();

  for(int i=1; i<listSize; i=i+2) {
       System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i));
     }

}, "ODD");

我得到了完美的输出,请帮助我重构FOR LOOP,在此先感谢

ODD - 1
ODD - 3
ODD - 5
EVEN - 0
EVEN - 2
EVEN - 4
EVEN - 6
java for-loop java-8
3个回答
1
投票

如果使用的是Java-9,则可以使用:-


0
投票

在Java-8上,您可以使用IntStream.range()来做到这一点>

IntStream.range(1, listSize)
         .filter(i->i%2!=0)
         .forEach(i->System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i)));

0
投票

您也可以使用foreach来做到这一点:

© www.soinside.com 2019 - 2024. All rights reserved.