日期:2014-05-20  浏览次数:20783 次

ArrayList中的get与size
本人刚刚接触java,今天自己敲代码的时候遇到了问题。运行过程中出现了这个错误。

告诉我下标越界了,根据出现错误的行号找到出错位置。出错位置的代码如下:

当时就觉得很奇怪,因为ArrayList的size应该为10,而出错时的信息为size=5,index=5,
我就纠结了,get不是返回指定下标处的object吗?难道还会删除这个位置的object?于是,我用了一种很笨的方法,在出错代码位置添加了这样的代码:

结果输出让我觉得很迷惑:

这不就时说在get的时候真的移除了对应位置的object?球大神指点啊

------解决方案--------------------
你自己不是写着datas.remove(i)
如果你打算移动一个删一个的话,建议你倒着来
这样就不会出错了
------解决方案--------------------
你是一边查看,一边删除,你说呢。。。  循环一次集合元素就少一个,元素的索引也跟着变了,而你的sorts是个定值,所以循环到了5次的时候,集合里就5个元素了,第六次循环找第六个元素肯定不存在了呀,所以报了越界错误。。