java - 将项目添加到多维 ArrayList

标签 java arrays multidimensional-array

您好,只有几个小时的 Java 时间。 (来自Python) 我正在尝试定义一个多维数组并使用“add”方法填充它。然而,我看到了一些奇怪的结果:

List<String[]> DrawInstructions = new ArrayList<String[]>();
String[] pair = {"",""};

pair[0]="UW";
pair[1]="100";
DrawInstructions.add(pair); 

pair[0]="UM";
pair[1]="10";
DrawInstructions.add(pair);

pair[0]="UT";
pair[1]="50";
DrawInstructions.add(pair)

我预计 DrawInstructions 会以这样的方式结束:

[("华盛顿大学,"100"),("UM","10"),("UT","50")]

但我得到的是:

[("UT","50"),("UT","50"),("UT","50")]

我确信这是非常基本的,但我无法弄清楚,我已经搜索了几个小时。谢谢您的建议。

最佳答案

问题是,您一遍又一遍地更改同一个数组 - .add() 不会为您创建副本。请尝试以下操作:

List<String[]> DrawInstructions = null;
String[] pair = {"",""};

pair[0]="UW";
pair[1]="100";
DrawInstructions.add(pair); 

pair = new String[] {"",""};
pair[0]="UM";
pair[1]="10";
DrawInstructions.add(pair);

pair = new String[] {"",""};
pair[0]="UT";
pair[1]="50";
DrawInstructions.add(pair);

或者,更好的是,

List<String[]> drawInstructions = new ArrayList<String[]>();
drawInstructions.add(new String[] {"UW", "100"}); 
drawInstructions.add(new String[] {"UM", "10"});
drawInstructions.add(new String[] {"UT", "50"});

这将更接近 Java 命名标准,避免 NPE,最小化本地状态,并且可以说更具可读性。

关于java - 将项目添加到多维 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8701361/

相关文章:

java - 整数对象在方法内正确实例化但返回 null

java - SmbFileInputStream 抛出致命异常 : main

c - 将数组从 C 传递到 nasm 时出现段错误

ruby - 检查多维数组中子数组大小是否相等的最优雅的方法?

java - 登录尝试持续时间

java - 为什么需要 `robot.keyRelease(KeyEvent.VK_CONTROL)`?

arrays - MongoDB查询通过数组中的值检索一个数组值

arrays - ALLOCATABLE 数组还是 POINTER 数组?

java - 如何用Java分别对二维数组的行和列求和?

java - 尝试使用二维数组和用户输入来设置大小来创建单词搜索?