Java将for循环转换为lambda表达式
我想把下面的代码转换成lamda expression,特别是用粗体标记的FOR循环,从第一个索引开始,跳过下一个索引[I=I+2]Java将for循环转换为lambda表达式,java,for-loop,java-8,Java,For Loop,Java 8,我想把下面的代码转换成lamda expression,特别是用粗体标记的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 = ReadLis
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");
如果您使用的是java-9,则可以使用:-
IntStream.iterate(1,i -> i < listSize ,i ->i+2).forEach(i -> Thread.currentThread().getName()+" - "+integerArrayList.get(i));
如果您使用的是java-9,则可以使用:-
IntStream.iterate(1,i -> i < listSize ,i ->i+2).forEach(i -> Thread.currentThread().getName()+" - "+integerArrayList.get(i));
在java-8上,可以使用
IntStream.range()
在java-9中,您可以在iterate
本身中限制结果
IntStream.iterate(1, i->i<listSize,i->i+2)
.forEach(i->System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i)));
在java-8上,可以使用
IntStream.range()
在java-9中,您可以在iterate
本身中限制结果
IntStream.iterate(1, i->i<listSize,i->i+2)
.forEach(i->System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(i)));
您还可以使用foreach执行此操作:
integerArrayList.stream().forEach(e->{
if(e%2 != 0){
System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(e));
}
});
您还可以使用foreach执行此操作:
integerArrayList.stream().forEach(e->{
if(e%2 != 0){
System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(e));
}
});
您尝试过什么吗?您使用的是哪个jdk?我能够完成它,感谢所有的/*代码从这里开始*/List oddList=readlist8refector.getIntegerList().stream().filter(I->I%2!=0).collect(Collectors.toList());oddList.stream().forEach((值)->{System.out.println(值);1)获取条件为(i->i%2!=0)的筛选器流.2)在地板上做一个forEachstream@user2488681
filter
索引和元素是两件不同的事情。for
循环代码迭代奇数索引,而流代码将过滤奇数值。它恰好与提供的输入一致,结果可能相同。您尝试了什么吗?您是哪种jdk使用?我能够完成它,感谢所有的/*代码从这里开始*/List oddList=ReadList8Refctor.getIntegerList().stream().filter(I->I%2!=0.collect(Collectors.toList());oddList.stream().forEach((value)->{System.out.println(value);1)获取一个条件为(I->I%2!=0)的过滤器流.2)在地板上做一个forEachstream@user2488681filter
索引和元素是两件不同的事情。for
循环代码迭代奇数索引,而流代码将过滤奇数值。它恰好与提供的输入一致,因此结果可能相同。forEach
是无效项最后一个操作,您可能希望在那里执行任务,或者mapToObj
和collect
以后使用它。forEach
作为无效的终端操作,您可能希望在那里执行任务,或者mapToObj
和collect
以后使用它。
integerArrayList.stream().forEach(e->{
if(e%2 != 0){
System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(e));
}
});