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

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

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

    }

}
cidc1ykv

cidc1ykv1#

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

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

或添加数组的副本:

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

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

相关问题