A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 rick1991chen 于 2015-6-11 10:45 编辑
  1.         public static void removeElements(List<Integer> list)
  2.         {
  3.                 int i = 0;
  4.                 while (i<list.size())
  5.                 {
  6.                         if (list.get(i)%2 == 0)
  7.                         {
  8.                                 list.remove(i);
  9.                         }
  10.                         else
  11.                                 i++;
  12.                 }
  13.         }
复制代码
如上面的代码,为什么不在第6行的if语句内加上一个i++,用于遍历下一个集合中的元素;难道是remove()方法用了以后,会自动改变数组表的角标?
希望能有技术高手给解答!!!

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

1 个回复

倒序浏览
当调用remove方法时,表中的数据被获取,并删除,下一个元素自动向上填补空出的位置,然后不用i++,在i角标的位置读到原本是i++角标位置的元素,所以不进行自增。
没人回答我,自己去找人问了!难道论坛都是水贴!?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马