arrays - 使用流将以下命令式 Java 代码(嵌套的 for 循环)转换为 Java 8
问题描述
下面是嵌套 for 循环的命令式样式。我想利用 java 8 Streams 和其他特性使其成为一种功能风格。
import java.util.Arrays;
public class Java8 {
public static final String TAILS = "TAILS";
public static final String HEADS = "HEADS";
public static void main(String[] args) {
String[] coines = new String[11];
Arrays.fill(coines, TAILS);
for(int i=1;i<coines.length ; i++){
System.out.println("Person :" + i);
for (int j=1; j < coines.length ; j++){
if(j%i==0){
System.out.print("Flipping " + j +"th Element from " + coines[j] + " to ");
coines[j] = coines[j]== TAILS ? HEADS : TAILS;
System.out.println(coines[j]);
}
}
}
}
}
解决方案
我想你想做这样的事情
import java.util.Arrays;
import java.util.stream.IntStream;
public class Java8 {
public static final String TAILS = "TAILS";
public static final String HEADS = "HEADS";
public static void main(String[] args) {
String[] coines = new String[11];
Arrays.fill(coines, TAILS);
IntStream.range(0, coines.length).forEach(i-> {
System.out.println("Person :" + i);
IntStream.range(0, coines.length).filter(j->j%i==0)
.forEach(j -> {
System.out.print("Flipping " + j +"th Element from " + coines[j] + " to ");
coines[j] = coines[j].equalsIgnoreCase(TAILS) ? HEADS : TAILS;
System.out.println(coines[j]);
});
});
}}
我也改变if
了 infilter
和==
in equalsIgnoreCase
。
推荐阅读
- python - 尝试编写 DnD 战斗脚本,需要帮助在掷骰后打印敌人 HP
- c++ - BTSK 顶部的 C++ 行为树代码表示 Behavior() : m_eStatus(BH_INVALID) {} 是什么意思?
- python - 使用 pandas 更改日期格式
- node.js - 将 React Web 应用程序部署到 AWS 放大。(Mac)
- r - 使用 difftime 按间隔分组
- robotframework - 如何在 Robot Framework 的列表位置创建增量变量
- python - 如何在 Django 中安全地加载 SQL 装置
- memory-leaks - SwiftUI NavigationLink 内存泄漏
- javascript - 无法读取空谷歌甘特图的属性“valueOf”
- api - Puppeteer,从 HTTP 生成 pdf