黑马程序员技术交流社区
标题:
迭代器遍历添加元素?
[打印本页]
作者:
lijiy09
时间:
2016-3-17 12:56
标题:
迭代器遍历添加元素?
List<String> list = new ArrayList<String>();
String s1 = "hello";
String s2 = "world";
String s3 = "java";
list.add(s1);
list.add(s2);
list.add(s3);
ListIterator<String> lit = list.listIterator();
while (lit.hasNext()) {
String s = (String) lit.next();
if (s.equals("hello")) {
lit.add("javaee");
}
System.out.println(s);
}
System.out.println(list);
这里迭代器添加对象后,输出结果为
hello
world
java
[hello, javaee, world, java]
添加的"javaee"却没有被遍历输出?求解?
作者:
cxy374100657
时间:
2016-3-17 13:54
没有输出吗?
作者:
tangshenshen
时间:
2016-3-17 14:03
观摩观摩,哈`~~~~~~
作者:
little_bear123
时间:
2016-3-17 14:49
迭代器有add方法吗
作者:
任楚贤
时间:
2016-3-17 16:14
在你的代码中,if语句中的意思是当遇到“hello”是,就加入“javaee”,所以结果就是这样的
作者:
freshnboy
时间:
2016-3-17 16:25
本帖最后由 freshnboy 于 2016-3-17 16:31 编辑
也就是说listIterator在使用完add方法后自动跳过了添加的元素咯?我们把楼主的代码稍作修改: if (s.equals("hello")) {
lit.add("javaee");
lit.add("lhy");
lit.add("lhy");
lit.add("lhy");
}
实际上把楼主的add语句多添加几个,结果依然是不迭代新添加的元素。
if (s.equals("hello")) {
lit.add("javaee");
lit.add("lhy");
lit.add("lhy");
lit.add("lhy");
lit.previous();
}
而使用了一次previous方法后,就往回迭代了一个index,所以listIterator应该是跳过新添加的元素的。记得视频讲过迭代器底层是用数组实现的,那可能index就在add之后自动++了吧。
作者:
lijiy09
时间:
2016-3-17 21:00
加上lit.previous();果然可以输出迭代器添加的对象了,谢谢解答~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2