8.练习1_ArrayList:提示用户输入整数,存放到ArrayList集合中,输入0代表结束,分别使用for、foreach、iterator循环集合,并删除所有是3的倍数的元素

8.练习1_ArrayList:提示用户输入整数,存放到ArrayList集合中,输入0代表结束,分别使用for、foreach、iterator循环集合,并删除所有是3的倍数的元素

学习:第7遍


1.练习1:ArrayList

提示用户输入整数,存放到ArrayList集合中,输入0代表结束
分别使用for、foreach、iterator循环集合,并删除所有是3的倍数的元素

问题:使用foreach或iterator进行循环时,不能直接对集合进行remove()操作
解决:1.使用for循环
2.使用iterator提供的remove()方法



package season13;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

/**
 * 提示用户输入整数,存放到ArrayList集合中,输入0代表结束
 * 分别使用for、foreach、iterator循环集合,并删除所有是3的倍数的元素
 */
public class TestArrayList1 {
    public static void main(String[] args) {
		
    	Scanner input = new Scanner(System.in);
    	
    	
    	ArrayList<Integer> arrayList = new ArrayList<Integer>();
    	
    	while(true){
    		System.out.print("请输入整数:");
        	int nextInt = input.nextInt();
        	if(0==nextInt){
        		break;
        	}
        	arrayList.add(nextInt);
    	}
    	
    	//for循环
    	for (int i = arrayList.size()-1; i >= 0; i--) {
    		int num = arrayList.get(i);
    		if(num%3==0){
    			//如果要删除内容为整型的,参数为int型,放包装类Integer
    			//删除值为6的,arrayList.remove(new Integer(6));
    			arrayList.remove(i);
    		}
		}
    	System.out.println(arrayList);
    	
    	//forEach循环
    	for (Integer num:arrayList) {
    		if(num%3==0){
    			//删除值为num的整型数字
    			arrayList.remove(new Integer(num));
    		}
		}
    	System.out.println(arrayList);
    	
    	//forEach循环:只能读取,不能改变删除集合中的元素
    	for (Integer num:arrayList) {
    		if(num%3==0){
    			//删除值为num的整型数字
    			arrayList.remove(new Integer(num));//会报同时修改异常
    		}
		}
    	System.out.println(arrayList);
    	
    	//iterator:只能读取,不能改变删除集合中的元素
    	Iterator<Integer> iterator = arrayList.iterator();
    	while(iterator.hasNext()){
    		Integer next = iterator.next();
    		if(next%3==0){
    			//arrayList.remove(next);//list.remove()会报同时修改异常
    			//此时使用迭代器的remove()方法则可以
    			iterator.remove();//删除当前正在迭代的元素
    		}
    	}
    	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值