[英]Java convert for loop into lambda expression [on hold]
I want to convert the below code into lamda expession, especially the FOR LOOP marked in bold, starting from 1st index and skipping the next index[i=i+2]我想将下面的代码转换为lamda expession,特别是用粗体标记的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");
I get perfect output, help me to refactor the FOR LOOP, Thanks in Advance我得到了完美的 output,帮我重构 FOR LOOP,在此先感谢
ODD - 1
ODD - 3
ODD - 5
EVEN - 0
EVEN - 2
EVEN - 4
EVEN - 6
If you are using java-9 you can use:-如果您使用的是 java-9,您可以使用:-
IntStream.iterate(1,i -> i < listSize ,i ->i+2).forEach(i -> Thread.currentThread().getName()+" - "+integerArrayList.get(i));
On java-8:-在 java-8 上:-
IntStream.range(1,listSize).filter(value -> value%2!=0).forEach(i -> Thread.currentThread().getName()+" - "+integerArrayList.get(i));
On java-8 you can do it by using IntStream.range()
在 java-8 上,您可以使用IntStream.range()
IntStream.range(1, listSize)
.filter(i->i%2!=0)
.forEach(i->System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i)));
From java-9 you can limit the result in iterate
itself从 java-9 开始,您可以将结果限制为iterate
本身
IntStream.iterate(1, i->i<listSize,i->i+2)
.forEach(i->System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i)));
Or by using stream.iterate
from java-9或者通过使用来自 java-9 的stream.iterate
Stream.iterate(1, i->i<listSize,i->i+2)
.forEach(i->System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i)));
You can also do it with foreach:你也可以用 foreach 来做:
integerArrayList.stream().forEach(e->{
if(e%2 != 0){
System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(e));
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.