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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//想要删除你指定一个元素以及其紧跟着的一个元素
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么?

3 个回复

正序浏览
kebi 发表于 2015-11-10 00:47
第一次remove,b被删除,c的索引变成了i;而第二次再remove时,你remove的是索引 i+1,自然就是d被移除;
如 ...

原来如此。。。谢谢
回复 使用道具 举报
你删除一个,后面的元素会自动补到前边得
回复 使用道具 举报
本帖最后由 kebi 于 2015-11-10 00:59 编辑

第一次remove,b被删除,c的索引变成了i;而第二次再remove时,你remove的是索引 i+1,自然就是d被移除;
如图:
              
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马