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

标签 java for-loop java-8

我想将下面的代码转换为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/

相关文章:

java - Android 禁用其他应用程序的方法

r - 使用 for 循环在 R 中创建多个具有不同图例比例的气泡图

linux - Bash 混合 for 循环和 if then 表达式给出不好的结果

linux - 使用 Bash 脚本输出邮件

Java 8流并行reduce BiFunction累加器

java - 如何使JavaFX服务中的任务不断接受参数?

java - 如何在Android Studio中使用OpenCV检测和计数随机大小的白色物体

java - hawtdispatch : a simple threadpool example

java - java中的绘图框架

java - 流可以创建新对象吗?