中易网

ListIterator的add方法的死循环问题

答案:2  悬赏:50  
解决时间 2021-01-04 12:48
import java.util.*;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
List name = new ArrayList();
name.add("同学A");
name.add("同学B");
name.add("同学C");
name.add("同学D");
name.add("同学E");
name.add("同学F");
ListIterator li = name.listIterator();
while (li.hasNext()) {
//System.out.println(li.next());
li.add("下一个");
}
System.out.println(name);
}
}
如上代码就会造成死循环,但是如果把System.out.println(li.next());这行的注释取消就没问题,这是为什么呢?求解?
最佳答案
首先可以调用ListIterator的add方法将元素插入原始List中,但是如果插入中间位置是否会陷入死循环呢,插入一个元素后,ListIterator的元素数量增加了,这样的话,相当于自己给自己添加元素,然后还遍历自己再添加元素。楼主是否还有更详细的描述,比如直插入原有的数据,再次插入的数据不再重复插入内之类的限制条件!
全部回答
效果没有区别,但使用上区别很大。 考虑在迭代中使用add()、remove()等方法 使用迭代器调用iterator.add()、iterator.remove()后,iterator.next()还是指向原来的元素 而使用for(int i = 0; i< list.size(); i++)循环调用list.add(i, obj)后,下一个i指向的是新增的元素,而调用list.remove(i),则下一个i会跳过一个元素。 因此大部分迭代的情况还是优先考虑使用迭代器。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
黄昏的太阳填空黄昏的太阳怎样三年级
甘爽的意思是什么啊?请解释下!
允诺的意思是什么?允诺的释义是什么啊?
彩视提示上传素材logo失败怎么回事儿
thinkpad 20bu 20bv怎么看
2014成都到九寨沟怎么去
这款鞋叫什么,多少钱?
超级简单又好吃的烤鸡怎么做
怀表的意思是什么?怀表的释义是什么啊?
托勒密王国的意思是什么啊?请解释下!
小芳问,你是怎样画风,我说什么
为什么要进行班组文化建设
电脑怎么能连上7位数的密码
攫騰的意思是什么?攫騰的释义是什么啊?
家门干枯树倒下是什么兆头
推荐资讯
求将《与朱元思书》改写为一篇散文?
绝地求生账号被封了怎么申诉
儿子可以帮妈办银行卡吗?
考研数学复习全书
7.3日 盗墓笔记随便看?
中国地图上有几种颜色代表什么意思
油田的增压点和集输站是一起的吗?
温心花坊(满天星花店)地址在什么地方,想过去
买黄金什么样的钱可以一百当两百用
陈勋奇最近在代言碱法吗?
69*97+207怎么简算
东方系列每一作的BOSS都是谁?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?