向量替换自身内部的值而不访问它



我最近遇到了一个问题,涉及使用数组向量(或arrayList<>(基本上,我把我的元素放进一个小数组,然后放进我的Vector,但当所有的小数组都加载到大数组中,小数组覆盖新数据(这就是我想要的(时,Vector也会覆盖这不是我想要的,因为我最终得到了280等于元素,就像向量有一个链接关系一样,我不理解

我也在与我的问题有关的旧帖子中搜索过,但他们的解决方案不适合我的问题,因为我没有遇到那些回答的帖子

遵循我的代码

package DataManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Vector;
public class LeggiJsonNew {
public static void main(String[] args) throws IOException {
String urlString = "https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-json/dpc-covid19-ita-andamento-nazionale.json";
Vector<String[]> bigArray = new Vector<String[]>(); 
URL url = new URL(urlString);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));

String line;    
String[] smallArray = new String[19];
int i=0;
int j=0;
try {
while ((line = reader.readLine()) != null) {
if(line.equals("[")) {
continue;
}

smallArray[j]=line;
j++;

if(line.equals("    },") || line.equals("    }")) {
bigArray.add(i,smallArray);
i++;
j=0;
}
}
} catch (IOException e) {
e.printStackTrace();
}

}
}

您不断添加相同的数组。

如果您想每次添加不同的阵列,请创建一个新阵列,例如:

bigArray.add(i,smallArray);
smallArray = new String[10];

或者添加阵列的副本:

bigArray.add(i, Arrays.copyOf(smallArray, smallArray.length));

请注意,Vector基本上已弃用;请改用ArrayList

还要注意的是,您不需要跟踪要添加到bigArray的位置:bigArray.add(smallArray)也会这样做,只是没有i的内务管理。

还要注意的是,您似乎没有采取任何步骤来确保只将元素分配给有效索引,例如,如果j达到10,则会得到ArrayIndexOutOfBoundsException;相反,当您将数组添加到bigArray时,实际上并没有检查您是否使用了数组的所有10个元素。

您可能会发现使用List(特别是ArrayList(而不是数组更简单,因为数组会根据需要调整大小。

此外:看起来您正在解析JSON:使用JSON库。

最新更新