黑马程序员技术交流社区

标题: 一道关于list集合的运行结果问题? [打印本页]

作者: 478883662    时间: 2015-11-9 23:30
标题: 一道关于list集合的运行结果问题?
//想要删除你指定一个元素以及其紧跟着的一个元素
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d","e","f"));
                for(int i=0;i<list.size();i++){
                        //删除b以及紧跟b后的一个元素
                        if ("b".equals(list.get(i))) {
                                list.remove(i);
                                if(i<list.size()-1)//判断不是最后一个元素
                                        list.remove(i+1);
                        }
                       
                }
                System.out.println(list);

为什么运行结果是[a, c, e, f]?
不应该是adef么?


作者: kebi    时间: 2015-11-10 00:47
本帖最后由 kebi 于 2015-11-10 00:59 编辑

第一次remove,b被删除,c的索引变成了i;而第二次再remove时,你remove的是索引 i+1,自然就是d被移除;
如图:
              

作者: 大自然的搬运工    时间: 2015-11-10 01:11
你删除一个,后面的元素会自动补到前边得
作者: 478883662    时间: 2015-11-10 09:07
kebi 发表于 2015-11-10 00:47
第一次remove,b被删除,c的索引变成了i;而第二次再remove时,你remove的是索引 i+1,自然就是d被移除;
如 ...

原来如此。。。谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2