主题:关于迭代器删除的使用
public void removeContact(String cname)
{
int index = 0;
boolean flag = false;
Iterator it = list.iterator();
Contact tmp;
if (list.isEmpty())
System.out.println("List id empty!");
else
{
while(it.hasNext())
{
tmp = (Contact)it.next();
if (cname.equals(tmp.getName()))
{
System.out.printl("Successful: "+tmp.getName()+" "+tmp.getNum()+" had been deleted!");
list.remove(index);
flag = true;
index = -1;
it = list.iterator();
}
index++;
}
if (flag)
System.out.println("No such person whose name ==" + cname);
}
}这是关于一个通讯录的删除方法。在一个存有几个记录(有相同的名字,但号码不同)的通讯录里,按照名字删除,在使用迭代器的时候有点问题,原来是没有加////的两句的,但发现删除第一个后后面同名的删除操作就错了,猜想可能是删除后it迭代器有了变化,但是加了带////的两句之后发现会重复打印删除的内容,对迭代器的使用还不是很清楚,不知道有没有把问题说清楚,请大家赐教!
{
int index = 0;
boolean flag = false;
Iterator it = list.iterator();
Contact tmp;
if (list.isEmpty())
System.out.println("List id empty!");
else
{
while(it.hasNext())
{
tmp = (Contact)it.next();
if (cname.equals(tmp.getName()))
{
System.out.printl("Successful: "+tmp.getName()+" "+tmp.getNum()+" had been deleted!");
list.remove(index);
flag = true;
index = -1;
it = list.iterator();
}
index++;
}
if (flag)
System.out.println("No such person whose name ==" + cname);
}
}这是关于一个通讯录的删除方法。在一个存有几个记录(有相同的名字,但号码不同)的通讯录里,按照名字删除,在使用迭代器的时候有点问题,原来是没有加////的两句的,但发现删除第一个后后面同名的删除操作就错了,猜想可能是删除后it迭代器有了变化,但是加了带////的两句之后发现会重复打印删除的内容,对迭代器的使用还不是很清楚,不知道有没有把问题说清楚,请大家赐教!