NullPointer 发表于 2017-1-9 11:29

list和iterator的remove区别

public static void main(String[] args) {
                List<String> lists = new ArrayList<String>();
                lists.add("1");
                lists.add("1");
                lists.add("3");
                for(int i = 0; i < lists.size(); i++) {
                        if("1".equals(lists.get(i))) {
                                lists.remove(i); //只删除第一个
                        }
                }
                System.out.println(JSONArray.fromObject(lists)); //1,3
       
                Iterator<String> it = lists.iterator();
                while(it.hasNext()) {
                        if("1".equals(it.next())) {
                                it.remove();        //将匹配的全部都删除
                        }
                }
                System.out.println(JSONArray.fromObject(lists)); //3
        }

247192825 发表于 2017-1-9 11:49

list remove 后需要复位一下索引; i--

hlrlqy 发表于 2017-1-9 12:56

for的话 你删除完第一个i 数组就剩下两个东西 索引就是 0 1 而删除的时候索引是0 所以第二次循环就是索引1 就是数字3了 而hasnext不是通过索引位置来的 所以无论数组怎么变化 都会判断数组所有成员

不懂继续问

NullPointer 发表于 2017-1-9 13:01

hlrlqy 发表于 2017-1-9 12:56
for的话 你删除完第一个i 数组就剩下两个东西 索引就是 0 1 而删除的时候索引是0 所以第二次循环就是索引1...

{:1_921:}就是这样。

xia随风而逝 发表于 2017-1-9 16:12

NullPointer 发表于 2017-1-9 13:01
就是这样。

高手云集
页: [1]
查看完整版本: list和iterator的remove区别