我有一个类型列表,String[]
其中在运行n次的循环内添加数组。
String[] parsedFields = new String[fieldsToParse.length];
List<String[]> myList= new ArrayList<String[]>();
while (getType()) {
// ...
for (int i = 0; i < fieldsToParse.length; i++) {
if (name.equals(fieldsToParse[i])) {
parsedFields[i] = fieldsToParse;
// ...
}
}
myList.add(parsedFields);
}
每次将数组添加到列表时,该数组都是相同的,但值是不同的。
问题是每次我在新迭代中添加数组时,列表中所有以前添加的数组都会根据最后添加的数组的内容进行更新吗?
例如,在第一次迭代中myList
包含:
myList > array > [0] = [1, 1, 'A']
在第二次迭代时,列表将变为:
myList > array > [0] = [2, 2, 'B']
myList > array > [0] = [2, 2, 'B']
第三,它将:
myList > array > [0] = [3, 3, 'C']
myList > array > [0] = [3, 3, 'C']
myList > array > [0] = [3, 3, 'C']
当while循环中断时,列表中的所有数组元素都包含相同的数组(实际上是最后添加的数组)。我该如何从更新的先前添加的阵列中阻止它,请提供帮助。
将parsedFields的声明移到while循环内。否则,您将只更新相同的数组,并在myList中进行新引用以指向该数组。
List<String[]> myList = new ArrayList<String[]>();
while (getType()) {
String[] parsedFields = new String[fieldsToParse.length];
// …
for (int i = 0; i < fieldsToParse.length; i++) {
if (name.equals(fieldsToParse[i])) {
parsedFields[i] = fieldsToParse;
// ...
}
}
myList.add(parsedFields);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句