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();//删除当前正在迭代的元素
}
}
}
}