首页 > 代码库 > 一个很奇怪的问题
一个很奇怪的问题
先来看看我的一段代码:
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里面的东西,如果在前面后面删除都没有关系,那么从后面开始删除可以减少移动的次数。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。