Arraylist的ArrayList删除函数会影响所有Arraylists

use*_*029 1 java android arraylist

我创建了一个包含80个Arraylists的ArrayList.每个ArrayList里面的值都是1-9.

但是,当我从其中一个Arraylists中删除一个值时,将其删除.

ArrayList<List> available = new ArrayList<List>();
ArrayList<Integer> possibleValues = new ArrayList<Integer>();



    for(int j = 1; j<=9; j++){
        possibleValues.add(j);
    }

    for (int i = 0; i<=80; i++){
        available.add(possibleValues);  
    }

     int b = (int) available.get(0).get(2);
     available.get(0).remove(0);
     String s = available.get(80).toString();
     System.out.println(" " + s);

}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

rge*_*man 6

这里的问题是你已经添加了相同ArrayList possibleValuesavailable81次.因此,该available列表包含对同一possibleValues列表的81个引用.

通过这81个引用中的任何一个可以看到对列表所做的任何更改.

如果您不希望所有引用都可以看到更改,只需要一个,那么您需要创建81个要添加的列表副本:

for (int i = 0; i<=80; i++){
    available.add(new ArrayList<Integer>(possibleValues));  
}
Run Code Online (Sandbox Code Playgroud)