如何优化Java随机数组代码,消除冗余随机变量?
优化随机二维数组生成的Java代码
核心优化思路
你的代码冗余根源在于手动定义大量重复的随机变量,解决核心是用循环或批量赋值逻辑替代单个变量定义,同时简化打印逻辑、提升代码可维护性。
优化后的基础版本
import java.util.Random; public class App { // 提取常量,方便后续修改行列数 private static final int ROWS = 4; private static final int COLS = 3; public static void main(String[] args) { Random ran = new Random(); int[][] array = new int[ROWS][COLS]; // 嵌套循环填充随机数,替代12个独立变量 for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { array[i][j] = ran.nextInt(2); } } String[] letter = {"A", "B", "C"}; // 用String.join简化字母行打印 System.out.println(String.join(" ", letter)); // 增强for循环提升可读性 for (int[] row : array) { for (int num : row) { System.out.print(num + " "); } System.out.println(); } } }
进一步简化(Java 8+)
如果使用Java 8及以上版本,可以用Arrays.setAll进一步精简数组填充逻辑:
import java.util.Random; import java.util.Arrays; public class App { private static final int ROWS = 4; private static final int COLS = 3; public static void main(String[] args) { Random ran = new Random(); int[][] array = new int[ROWS][COLS]; // 用Arrays.setAll批量生成随机数组 Arrays.setAll(array, i -> { int[] row = new int[COLS]; Arrays.setAll(row, j -> ran.nextInt(2)); return row; }); String[] letter = {"A", "B", "C"}; System.out.println(String.join(" ", letter)); // 用流简化数组行打印 for (int[] row : array) { System.out.println(String.join(" ", Arrays.stream(row).mapToObj(String::valueOf).toArray(String[]::new))); } } }
优化点说明
- 消除冗余变量:通过循环直接给数组元素生成随机数,彻底去掉12个重复的变量定义,代码结构更紧凑
- 提升可维护性:把行列数抽为常量,后续修改数组大小只需调整常量值,无需改动多处代码
- 简化打印逻辑:用
String.join替代繁琐的字符串拼接,增强for循环比传统索引循环可读性更高 - 逻辑模块化:填充和打印逻辑分离,后续扩展功能(比如修改随机数范围、调整输出格式)更便捷
内容的提问来源于stack exchange,提问作者Hakuryu Acosta Kato
相关产品推荐
相关产品推荐

