Java 将一个元素添加到列表中就是更新它以前的所有元素
我有一个类型为Java 将一个元素添加到列表中就是更新它以前的所有元素,java,android,Java,Android,我有一个类型为String[]的列表,其中在一个运行n次的循环中添加数组 String[] parsedFields = new String[fieldsToParse.length]; List<String[]> myList= new ArrayList<String[]>(); while (getType()) { // ... for (int i = 0; i < fieldsToParse.length; i++) {
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 > 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);
}
List myList=new ArrayList();
while(getType()){
String[]parsedFields=新字符串[fieldsToParse.length];
// …
for(int i=0;i
每次在循环中都需要创建一个新的数组-此时只创建一个。只需将parsedFields
的声明移动到循环中即可
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);
}