java-api-Collection-List在遍历的同时删除可能会出现问题

一般来说,有三种方式可以用来遍历一个集合:传统的for循环、for(Object item:list)类型、用iterator遍历。但是当边遍历,边删除集合元素的时候,可能会出现问题。

List<String> list = new LinkedList<>();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		
		System.out.println("遍历前:"+list);
		
		//传统for循环
//		for(int i=0;i<list.size();i++) {
//			String item = list.get(i);
//			if("3".equals(item)) {
//				list.remove(i);
//			}
//			System.out.print(item);
//		}
		
//		Iterator iter = list.iterator();
//		while(iter.hasNext()) {
//			String str = (String)iter.next();
//			System.out.println(str);
//			if("3".equals(str)) {
//				iter.remove();
//			}
//		}
		
		for(String item:list) {
			if("3".equals(item)) {
				list.remove(item);
			}
		}
		System.out.println(list);

其中,第一种方式会有漏掉某个元素的现象,第二种不会出现问题,第三种会出现编译错误。 

posted @ 2022-03-26 18:11  `安安安安安  阅读(40)  评论(0)    收藏  举报