最近做项目的过程中,需要用到list.remove()方法,结果发现两个有趣的坑,经过分析后找到原因,记录一下跟大家分享一下。直接上一段代码,进行分析。如上代码我们有一个5个元素的list数据集合,我们要删除第2个和第4个位置的数据。咦,为什么执行两次remove(),stringList的数据没有变化呢?仔细分析我们发现,remove()这个方法是一个重载方法,即remove和remove,唯一的区别是参数类型。如果我们想使用remove方法,只能降低对象等级,即修改代码;我们发现提示在坐标为4的地方越界了,这是为什么呢?其实很简单,因为执行stringList.remove后,list.size()就-1为4了,我们原来要移除的最后一个位置的数据移动到了第3个位置上,自然就造成了越界。我们修改代码先执行stringList.remove,再执行执行stringList.remove。
暂无评论