您好,只有几个小时的 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/