我最近遇到了一个问题,涉及到使用数组向量(或arraylist<>),基本上,我把我的元素放入一个小数组,然后放入我的向量,但是当所有的小数组都加载到大数组中,小数组覆盖了新数据(这是我想要的),向量也覆盖了这不是我想要的,因为我最终得到了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();
}
}
}
1条答案
按热度按时间cidc1ykv1#
继续添加相同的数组。
如果每次都要添加不同的数组,请创建一个新数组,例如:
或添加数组的副本:
请注意
Vector
基本上是不赞成的;使用ArrayList
相反。另外请注意,您不需要跟踪要添加到的位置
bigArray
:bigArray.add(smallArray)
我也会这么做的,只是没有内务管理i
.还要注意的是,看起来您并没有采取任何步骤来确保只将元素分配给有效索引,例如,您将得到一个
ArrayIndexOutOfBoundsException
如果j
达到10;相反,在将数组添加到中时,实际上并没有检查是否使用了数组的所有10个元素bigArray
.您可能会发现它更易于使用
List
(特别是ArrayList
)而不是数组,数组将根据需要调整大小。另外:看起来您正在解析json:使用json库。