使用JAVA迭代器
我正在尝试使用“迭代器”删除此ArrayList中索引号为偶数的字符串。删除使用JAVA迭代器,java,arraylist,iterator,Java,Arraylist,Iterator,我正在尝试使用“迭代器”删除此ArrayList中索引号为偶数的字符串。删除 import java.util.*; 导入静态java.lang.System.out; 班长 { 公共静态void main(字符串参数[]) { ArrayList al=新的ArrayList(); 迭代器i=al.Iterator(); 内伦; 扫描仪sc=新的扫描仪(System.in); out.printf(“大小:”); len=sc.nextInt(); while(len!=0) { al.add
import java.util.*;
导入静态java.lang.System.out;
班长
{
公共静态void main(字符串参数[])
{
ArrayList al=新的ArrayList();
迭代器i=al.Iterator();
内伦;
扫描仪sc=新的扫描仪(System.in);
out.printf(“大小:”);
len=sc.nextInt();
while(len!=0)
{
al.add(sc.next());
len-=1;
}
对象o;
对于(len=0;len
我在I.next()处得到“ConcurrentModificationException”;。怎么了?您没有使用迭代器迭代更正,因此无法使用它删除元素。要正确使用它,必须使用迭代器本身进行循环 i、 e
for(迭代器iter=list.Iterator();iter.hasNext();){
E元素=iter.next();
//1-可以调用元素的方法
//2-可以使用iter.remove()从列表中删除当前元素
// ...
}
可能是这样的:
int count = 0;
for (Iterator<String> iter = al.iterator(); iter.hasNext(); ) {
String element = iter.next();
System.out.print(element);
if (count % 2 == 0) {
iter.remove();
System.out.print(" -- has been deleted");
}
System.out.println();
count++;
}
int count=0;
for(迭代器iter=al.Iterator();iter.hasNext();){
String元素=iter.next();
系统输出打印(元素);
如果(计数%2==0){
iter.remove();
系统输出打印(“--已删除”);
}
System.out.println();
计数++;
}
另一个选项是使用for循环在集合中向后循环。这是可行的,因为删除项目不会更改删除项目之前项目的顺序或索引。您没有使用迭代器迭代更正,因此无法使用它删除元素。要正确使用它,必须使用迭代器本身进行循环 i、 e
for(迭代器iter=list.Iterator();iter.hasNext();){
E元素=iter.next();
//1-可以调用元素的方法
//2-可以使用iter.remove()从列表中删除当前元素
// ...
}
可能是这样的:
int count = 0;
for (Iterator<String> iter = al.iterator(); iter.hasNext(); ) {
String element = iter.next();
System.out.print(element);
if (count % 2 == 0) {
iter.remove();
System.out.print(" -- has been deleted");
}
System.out.println();
count++;
}
int count=0;
for(迭代器iter=al.Iterator();iter.hasNext();){
String元素=iter.next();
系统输出打印(元素);
如果(计数%2==0){
iter.remove();
系统输出打印(“--已删除”);
}
System.out.println();
计数++;
}
另一个选项是使用for循环在集合中向后循环。这可能会起作用,因为删除项目不会更改删除项目之前项目的顺序或索引。您会收到错误,因为迭代器会检查修改,检查AbstractList类中存在的实现,其中定义了一个int变量modCount,该变量提供了列表大小更改的次数 查看此链接以获取详细答案:
由于迭代器检查修改,检查AbstractList类中存在的实现,在AbstractList类中定义了一个int变量modCount,该变量提供了列表大小更改的次数,因此出现了错误 查看此链接以获取详细答案:
使用迭代器,然后在其上调用remove():
Iterator itr=list.Iterator();
while(itr.hasNext()){
字符串s=itr.next();
如果(条件)
itr.remove();
}
使用迭代器,然后对其调用remove():
Iterator itr=list.Iterator();
while(itr.hasNext()){
字符串s=itr.next();
如果(条件)
itr.remove();
}
不理解您的最后一行。不理解您的最后一行。
int count = 0;
for (Iterator<String> iter = al.iterator(); iter.hasNext(); ) {
String element = iter.next();
System.out.print(element);
if (count % 2 == 0) {
iter.remove();
System.out.print(" -- has been deleted");
}
System.out.println();
count++;
}
Iterator<String> itr = list.iterator();
while (itr.hasNext()) {
String s = itr.next();
if (Condition)
itr.remove();
}