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

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

我想把下面的代码转换成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 = 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@user2488681
filter
索引和元素是两件不同的事情。
for
循环代码迭代奇数索引,而流代码将过滤奇数值。它恰好与提供的输入一致,因此结果可能相同。
forEach
是无效项最后一个操作,您可能希望在那里执行任务,或者
mapToObj
collect
以后使用它。
forEach
作为无效的终端操作,您可能希望在那里执行任务,或者
mapToObj
collect
以后使用它。
    integerArrayList.stream().forEach(e->{
        if(e%2 != 0){
            System.out.println(Thread.currentThread().getName()+" - "+integerArrayList.get(e));
        }
    });