【Java】增强for循环,三种迭代的能否删除

1、目的:简化数组和Collection集合的遍历

2、格式:

        for(元素数据类型 变量 : 数组或者Collection集合){

                使用变量即可,该变量就是元素

        }

3、数组,集合存储元素用增强for遍历

1)数组

int[] arr = {11,22,33,44,55};
    for (int i : arr) {
	System.out.println(i);
    }

2)集合

ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
		
    for (String string : list) {
	System.out.println(string);
    }


4、三种迭代的能否删除

  • 普通for循环,可以删除,但是索引要--(自减),不然会边删集合元素在向前移动,同时指针也会向下移动,就会漏掉
  • 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
  • 增强for循环不能删除,因为增强for循环底层用的是迭代器
        ArrayList<String> list = new ArrayList<>();
	list.add("a");
	list.add("b");
	list.add("b");
	list.add("c");
	list.add("d");
		
	//1,普通for循环删除,索引要--
	for(int i = 0; i < list.size(); i++) {
	    if("b".equals(list.get(i))) {
		list.remove(i--);  //如果不--,就会漏删
		}
	}
		
	//2,迭代器删除
	Iterator<String> it = list.iterator();
	    while(it.hasNext()) {
		if("b".equals(it.next())) {
			//list.remove("b");	//不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
			it.remove();		//操作自身的东西就可以
		}
	}

	//迭代器的另一种写法	
	for(Iterator<String> it2 = list.iterator(); it2.hasNext();) {
	    if("b".equals(it2.next())) {
		//list.remove("b");	//不能用集合的删除方法,因为迭代过程中如果集合修改会出现并发修改异常
		it2.remove();    
	    }
	}

	//3,增强for循环,增强for循环不能删除,只能遍历,因为它的底层用的是迭代器,迭代器就不能删除这里也就不能删除
	for (String string : list) {   
	    if("b".equals(string)) {
		list.remove("b");   
	    }
	}
	System.out.println(list);






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值