如何将两个数组合并为按对应索引匹配的二维数组?
按索引合并两个数组的解决方案
嘿,这个问题其实挺常见的,咱们一步步来搞定它!你需要把两个同长度的数组按对应索引合并成二维数组,核心思路就是遍历每个索引位置,把两个数组对应位置的元素配对起来。
方法一:基础循环实现(最直观)
这是最容易理解的方式,适合刚接触Java的朋友:
public class ArrayMerge { public static void main(String[] args) { String movieList[] = { "A", "B", "C", "D", "E" }; int gross[] = { 623, 333, 516, 389, 448 }; // 先校验两个数组长度是否一致,避免越界 if (movieList.length != gross.length) { throw new IllegalArgumentException("两个数组的长度必须相同!"); } // 创建结果二维数组,长度和原数组一致 String[][] result = new String[movieList.length][2]; // 遍历每个索引,配对元素 for (int i = 0; i < movieList.length; i++) { result[i][0] = movieList[i]; // 把int类型的票房转成String,因为结果数组是String类型 result[i][1] = String.valueOf(gross[i]); } // 测试输出结果 for (String[] pair : result) { System.out.println("{" + pair[0] + ", " + pair[1] + "}"); } } }
运行这段代码后,你会得到想要的结果:
{A, 623} {B, 333} {C, 516} {D, 389} {E, 448}
方法二:Java 8+ 流处理(更简洁)
如果你的项目用的是Java 8及以上版本,可以用流API来简化代码,看起来更优雅:
import java.util.stream.IntStream; public class ArrayMergeWithStream { public static void main(String[] args) { String movieList[] = { "A", "B", "C", "D", "E" }; int gross[] = { 623, 333, 516, 389, 448 }; if (movieList.length != gross.length) { throw new IllegalArgumentException("两个数组的长度必须相同!"); } // 用IntStream遍历索引,映射成配对数组,再收集成二维数组 String[][] result = IntStream.range(0, movieList.length) .mapToObj(i -> new String[]{movieList[i], String.valueOf(gross[i])}) .toArray(String[][]::new); // 输出测试 for (String[] pair : result) { System.out.println("{" + pair[0] + ", " + pair[1] + "}"); } } }
关键注意点
- 一定要确保两个数组的长度完全一致,否则要么会出现数组越界异常,要么会导致部分数据无法配对。
- 因为你想要的结果数组是
String[][]类型,所以需要把int类型的票房值转换成String(用String.valueOf()或者Integer.toString()都可以)。
内容的提问来源于stack exchange,提问作者JCr8
相关产品推荐
相关产品推荐

