一点点关于集合的

直接上代码:

public static void main (String [] args){
		//数组
		int array[] = new int[3];
		for(int i = 0 ; i<array.length;i++){
			System.out.println(array[i]);
		}
		//集合
		List<String> list = new ArrayList<String>();
		list.add("jint");
		list.add("mingt");
		list.add("zuot");
		for(int i = 0; i<list.size();i++){
			String string = list.get(i);
			System.out.println(string);
		}
		
		//迭代器
		List<String> listdiedaiqi = new ArrayList<String>();
		listdiedaiqi.add("关羽1");
		listdiedaiqi.add("关羽2");
		listdiedaiqi.add("关羽3");
		listdiedaiqi.add("关羽4");
		List<String> linkList = new LinkedList<String>();
		linkList.add("link1");
        linkList.add("link2");
        linkList.add("link3");
        linkList.add("link4");
        Set<String> set = new HashSet<String>();
        set.add("set1");
        set.add("set2");
        set.add("set3");
        set.add("set4");
        //使用迭代器遍历ArrayList集合
        Iterator<String> listIt = listdiedaiqi.iterator();
        while(listIt.hasNext()){
        	String string = listIt.next();
        	System.out.println("使用迭代器遍历ArrayList集合:"+string);
        }
        //增强for循环
        for(String string : listdiedaiqi){
        	
        	set.add(string);
        	linkList.add(string);
//        	listdiedaiqi.remove("关羽1");//增强foreach本质是迭代器所有使用remove或add也会有异常抛出
//        	listdiedaiqi.add("关羽1");
        	System.out.println("//增强for循环遍历ArrayList集合:"+string);
        }
        
        set.add("关羽1");
        linkList.add("关羽1");
        System.out.println("无序不可重复set:"+set);
        System.out.println("有序可重复linkList:"+linkList);
        
        //普通循环
        for(int i = 0;i<listdiedaiqi.size();i++){
        	System.out.println("//普通循环遍历ArrayList集合:"+listdiedaiqi.get(i));
        }
        
        //使用迭代器遍历Set集合
        Iterator<String> setIt = set.iterator();
        while(setIt.hasNext()){
        	String string = setIt.next();
        	System.out.println("迭代器遍历Set集合:"+string);
        }
        
        //使用迭代器遍历linkList集合
        Iterator<String> linkListIt = linkList.iterator();
        while(linkListIt.hasNext()){
        	String string = linkListIt.next();
        	if(string.equals("link1")){
//        		linkList.remove(string);//抛出线程不安全异常
//        		linkList.add(string);
        	}
        	System.out.println("迭代器遍历linkList集合:"+string);
        }
	}

报错误的原因是:因为在你迭代之前,迭代器已经被通过list.itertor()创建出来了,如果在迭代的过程中,又对list进行了改变其容器大小的操作,那么Java就会给出异常。因为此时Iterator对象已经无法主动同步list做出的改变,Java会认为你做出这样的操作是线程不安全的,就会给出善意的提醒(抛出ConcurrentModificationException异常)

具体相关链接:https://blog.csdn.net/frankarmstrong/article/details/56003697

猜你喜欢

转载自blog.csdn.net/whatisthespring/article/details/81218747