本帖最后由 王宝龙 于 2012-9-24 20:41 编辑
你首先建立了arrayList_1,并添加了元素,
然后建立arrayList_2,arrayList_3,arrayList_4,但是并不是对他们自己引用的ArrayList进行操作 而是将arrayList_1的引用赋给 arrayList_2,arrayList_3,arrayList_4,
这就让 arrayList_2,arrayList_3,arrayList_4,引用arrayList_1的引用(如下面的图)
而这个异常是IndexOutOfBoundsException数组越界异常 你在不断的remove()但是操作的是同一个引用,只要移除十次 那个集合就空 但是程序还在对集合进行操作。
所以就会报告异常- import java.util.ArrayList;
- public class Test_14_2
- {
- public static void main(String args[])
- {
- ArrayList<Integer> arrayList_1 = new ArrayList<Integer>();
- ArrayList<Integer> arrayList_2 = new ArrayList<Integer>();
- ArrayList<Integer> arrayList_3 = new ArrayList<Integer>();
- ArrayList<Integer> arrayList_4 = new ArrayList<Integer>();
-
- arrayList_1.add(0);
- arrayList_1.add(1);
- arrayList_1.add(2);
- arrayList_1.add(3);
- arrayList_1.add(4);
- arrayList_1.add(5);
- arrayList_1.add(6);
- arrayList_1.add(7);
- arrayList_1.add(8);
- arrayList_1.add(9);
-
- arrayList_2 = arrayList_1;
- arrayList_3 = arrayList_1;
- arrayList_4 = arrayList_1;
-
- for (int a = 0; a < arrayList_1.size(); a++)
- {
- int i = arrayList_1.get(a);
- arrayList_2.remove(i);
- arrayList_3.remove(i);
- arrayList_4.remove(i);
- for (int b = 0; b < arrayList_2.size(); b++)
- {
- int j = arrayList_2.get(b);
- arrayList_3.remove(j);
- arrayList_4.remove(j);
- for (int c = 0; c < arrayList_3.size(); c++)
- {
- int m = arrayList_3.get(c);
- arrayList_4.remove(m);
- for (int d = 0; d < arrayList_4.size(); d++)
- {
- int n = arrayList_4.get(d);
- System.out.println(i * 1000 + j * 100 + m * 10 + n);
- }
- }
- }
- }
- }
- }
-
复制代码 |
|