list集合for 与iterator区别

1使用iterator可以使用自带的remove()删除元素,其他删除会报错;

2 增强for 底层实现是iterator;

3 for i=0;i<list.size();i++;删除会造成元素获取不到;

4 看来都不是线程安全了,本来以为iterator是iterator模式支持元素添加删除,看来不行啊

package xx.study.design.iterator;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListFor {
    public static void main(String[] args) {
        List<String> list=new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        
        Iterator<String> iterator= list.iterator();
        while (iterator.hasNext()){
            String tem=iterator.next();
            System.out.println(tem);
            //必须使用这个进行删除 list.remove(tem)程序也会报错
            //Exception in thread "main" java.util.ConcurrentModificationException
            iterator.remove();

        }
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        System.out.println("增强for ");
        for(String str:list){//底层是iterator
            System.out.println(str);
            //list.remove(str); 会报错
        }
        System.out.println(" for(int i=0;i<list.size(); i++){  --start=-");
       for(int i=0;i<list.size(); i++){//删除时导致其他对象获取不到
            System.out.println(list.get(i));
            list.remove(list.get(i));
        }
        System.out.println("over");
    }
}

输出:

a
b
c
d
增强for 
a
b
c
d
 for(int i=0;i<list.size(); i++){  --start=-
a
c
over

猜你喜欢

转载自blog.csdn.net/h4241778/article/details/107500564
今日推荐