我想将下面的代码转换为lamda表达式,尤其是粗体标记的FOR循环,从第一个索引开始并跳过下一个索引[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循环,提前致谢
ODD - 1
ODD - 3
ODD - 5
EVEN - 0
EVEN - 2
EVEN - 4
EVEN - 6
最佳答案
如果您使用的是 java-9,您可以使用:-
IntStream.iterate(1,i -> i < listSize ,i ->i+2).forEach(i -> Thread.currentThread().getName()+" - "+integerArrayList.get(i));
在 java-8 上:-
IntStream.range(1,listSize).filter(value -> value%2!=0).forEach(i -> Thread.currentThread().getName()+" - "+integerArrayList.get(i));
关于Java将for循环转换为lambda表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58437322/