import java.util.*;public class test{
public static void main(String args[]){
List<String> li=new ArrayList<String>();
li.add("hello");
li.add("world");
li.add("ok");
Iterator<String> t=li.iterator();
while(t.hasNext()){
String s=t.next();
if(s=="ok"){
t.remove();
//这边不能用容器li.remove(s);来删除容器里面的元素;
//请问如果用li来调用List的其他方法可不可以?会不会出错?
}
}
System.out.println(li);
}
}
public static void main(String args[]){
List<String> li=new ArrayList<String>();
li.add("hello");
li.add("world");
li.add("ok");
Iterator<String> t=li.iterator();
while(t.hasNext()){
String s=t.next();
if(s=="ok"){
t.remove();
//这边不能用容器li.remove(s);来删除容器里面的元素;
//请问如果用li来调用List的其他方法可不可以?会不会出错?
}
}
System.out.println(li);
}
}
解决方案 »
- JOptionPane的初级问题
- 字符串“254”如何转换为16进制的“FE”
- 我的JSP程序无法运行,提示附在下面,但我怎么看也不像,大家帮帮忙啊??
- 如何知道一个文件有没有其它线程在操作的状态呢?
- 帮忙看看这个程序??是什么问题??
- 打开一个Frame,在延时2秒后,自动关闭
- 我现在看了不少java的书但是还不知道怎么样在机器上运行
- 建立一个socket程序,是长连接的,在连接突然断掉,后要起个定时程序,每隔一段时间就试着去建立连接,直到连接成功建立,并保持该连接,
- 请问java函数可以返回数组吗
- java操作数据库的源程序
- 迷宫问题 java
- 实例说明:JAVA中如何使用BufferImage进行双缓存技术,实现图像的无闪烁显示?
1)把ArrayList改成Vector
2)如果不改,那么你新建一个List,备份原来的,然后在备份的List中进行删除
也就是:List<String> bak = new ArrayList<String>(li);你在for里面要remove的时候,用
bak.remove(s);
public static void main(String args[]){
List<String> li=new ArrayList<String>();
li.add("hello");
li.add("world");
li.add("ok");
li.add("okg");
Iterator<String> t=li.iterator();
while(t.hasNext()){
String s=t.next();
if(s.equals("ok")){
t.remove();
//这边不能用容器li.remove(s);来删除容器里面的元素;
//请问如果用li来调用List的其他方法可不可以?会不会出错?
}
}
System.out.println(li);
}
}[code=Java]
[/code]
int number;
String name;
double grade;
public Student(int number,String name,double grade){
this.number=number;
this.name=name;
this.grade=grade;
}
public String toString(){
return "number:"+number+" name:"+name+" grade:"+grade;
}
} public class test{
public static void main(String args[]){
List<Student> li=new ArrayList<Student>();
li.add(new Student(1,"A",80));
li.add(new Student(2,"B",70));
li.add(new Student(3,"C",60));
Iterator<Student> t=li.iterator(); //注释处
while(t.hasNext()){
Student s=t.next();
if(s.number == 1){
t.remove();
continue;
}
System.out.println(s);
}
}
}
这样就ok了
涉及到添加,删除,更新的操作,都不能在迭代过程中使用。不能用容器li.remove(s);这种抛异常ConcurrentModificationException可以不用Iterator!!
我以前用c#写的时候不能删除,只能使用for来删除
public class MyIterator { public static void main(String[] args){
List list = new ArrayList();
list.add("1111");
list.add("2222");
list.add("3333");
list.add("4444");
list.add("5555");
Iterator ite = list.iterator();
System.out.println("before iterator size is "+list.size());
while(ite.hasNext()){
String str = (String)ite.next();
if(str.equals("2222")){
System.out.println("enter this method!");
ite.remove();
}
}
System.out.println("after iterator size is "+list.size());
}
}