我最近遇到了一个问题,涉及使用数组向量(或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库。