先来看看我的一段代码:
1 ArrayList<Integer> array = new ArrayList<Integer>(); 2 3 for(int i = 0;i<100;i++){ 4 array.add(i); 5 } 6 for(int i=0;i<array.size();i++){ 7 // array.remove(new Integer(i)); 8 array.remove(i); 9 }
你觉得这样能不能把array里面的东西都删除呢?
输出的结果是这样的:
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
但是运行第7行代码的时候他的输出是这样的:
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
我开始还以为出什么问题了,后来才猛然想到,在ArrayList里面删除数据时会向前移动的,这是经常犯的一个错误,以后要小心。
而且我们知道如果想要removeArrayList里面的东西,如果在前面后面删除都没有关系,那么从后面开始删除可以减少移动的次数。
时间: 2024-10-23 10:00:12