Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个ArrayList添加到另一个ArrayList_Java_File_Arraylist_Multidimensional Array - Fatal编程技术网

Java 将一个ArrayList添加到另一个ArrayList

Java 将一个ArrayList添加到另一个ArrayList,java,file,arraylist,multidimensional-array,Java,File,Arraylist,Multidimensional Array,我在向ArrayList添加新元素时遇到问题,我将向您展示我的问题: ArrayList<ArrayList<String>> arr1= new ArrayList<ArrayList<String>>(); ArrayList<String> arr2= new ArrayList<String>(); 我需要的是将每个单词放入arr2,然后使用以下代码将arr2放入arr1: while ((line = file.

我在向
ArrayList
添加新元素时遇到问题,我将向您展示我的问题:

ArrayList<ArrayList<String>> arr1= new ArrayList<ArrayList<String>>();
ArrayList<String> arr2= new ArrayList<String>();
我需要的是将每个单词放入arr2,然后使用以下代码将arr2放入arr1

while ((line = file.readLine()) != null) {
            String[] words = line.split("\\,");
            if (arr2.isEmpty()) {
                for (int ae = 0; ae < words.length; ae++) {
                    arr2.add(ae, words[ae]);
                }
                arr1.add(arr2);
            } else {
                for (int ae = 0; ae < words.length; ae++) {
                    arr2.set(ae, words[ae]);
                }
                arr1.add(arr2);                    
            }
        }
        file.close();
while((line=file.readLine())!=null){
String[]words=line.split(“\\,”);
if(arr2.isEmpty()){
for(int-ae=0;ae
所以我需要的是:
[[a,b,c,d],[e,f,g,h],[I,j,k,l]
但是我得到:
[[I,j,k,l],[I,j,k,l],[I,j,k,l]


有什么解决办法吗

java
中,它处理引用,因此每次阅读该行时都必须创建新的
arr2
,因为当您将
arr2
添加到
arr1
中时,它仍然保留
arr2
的引用,因此,您对arr2所做的每个更改都会影响arr1中的数组+将要添加到arr1中的数组arr2(它们都是相同的数组)

一种解决方案是在while循环中声明arr2,如下所示
ArrayList arr2=new ArrayList()正如@dehasi在评论中所说

while ((line = file.readLine()) != null) {
        ArrayList<String> arr2= new ArrayList<String>();
        String[] words = line.split("\\,");
        for (int ae = 0; ae < words.length; ae++) {
            arr2.add(words[ae]);
        }
        arr1.add(arr2);

    }
    file.close();
while((line=file.readLine())!=null){
ArrayList arr2=新的ArrayList();
String[]words=line.split(“\\,”);
for(int-ae=0;ae

希望有帮助。

您正在添加相同的列表(arr2)3次。您需要填写和添加单独的(新)列表,而不是重新设置相同的列表。您应该创建一个新的
ArrayList arr2=new ArrayList()每次谢谢兄弟!这太有用了!它起作用了
while ((line = file.readLine()) != null) {
        ArrayList<String> arr2= new ArrayList<String>();
        String[] words = line.split("\\,");
        for (int ae = 0; ae < words.length; ae++) {
            arr2.add(words[ae]);
        }
        arr1.add(arr2);

    }
    file.close();