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

kuhbmx9i  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(443)

我最近遇到了一个问题,涉及到使用数组向量(或arraylist<>),基本上,我把我的元素放入一个小数组,然后放入我的向量,但是当所有的小数组都加载到大数组中,小数组覆盖了新数据(这是我想要的),向量也覆盖了这不是我想要的,因为我最终得到了280个等于的元素,就像向量有一个我不明白的链接关系
我也搜索过与我的问题相关的老帖子,但是他们的解决方案不适合我的问题,因为我没有遇到那些被回答的
遵循我的准则

  1. package DataManager;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.net.URL;
  6. import java.util.Vector;
  7. public class LeggiJsonNew {
  8. public static void main(String[] args) throws IOException {
  9. String urlString = "https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-json/dpc-covid19-ita-andamento-nazionale.json";
  10. Vector<String[]> bigArray = new Vector<String[]>();
  11. URL url = new URL(urlString);
  12. BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
  13. String line;
  14. String[] smallArray = new String[19];
  15. int i=0;
  16. int j=0;
  17. try {
  18. while ((line = reader.readLine()) != null) {
  19. if(line.equals("[")) {
  20. continue;
  21. }
  22. smallArray[j]=line;
  23. j++;
  24. if(line.equals(" },") || line.equals(" }")) {
  25. bigArray.add(i,smallArray);
  26. i++;
  27. j=0;
  28. }
  29. }
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. }
cidc1ykv

cidc1ykv1#

继续添加相同的数组。
如果每次都要添加不同的数组,请创建一个新数组,例如:

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

或添加数组的副本:

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

请注意 Vector 基本上是不赞成的;使用 ArrayList 相反。
另外请注意,您不需要跟踪要添加到的位置 bigArray : bigArray.add(smallArray) 我也会这么做的,只是没有内务管理 i .
还要注意的是,看起来您并没有采取任何步骤来确保只将元素分配给有效索引,例如,您将得到一个 ArrayIndexOutOfBoundsException 如果 j 达到10;相反,在将数组添加到中时,实际上并没有检查是否使用了数组的所有10个元素 bigArray .
您可能会发现它更易于使用 List (特别是 ArrayList )而不是数组,数组将根据需要调整大小。
另外:看起来您正在解析json:使用json库。

相关问题