黑马程序员技术交流社区
标题:
arrayList遍历问题
[打印本页]
作者:
qisikudingcha
时间:
2014-1-19 10:19
标题:
arrayList遍历问题
本帖最后由 qisikudingcha 于 2014-1-23 15:08 编辑
ArrayList<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
list.remove("张三");
}
复制代码
这样子用不会报错,但是如果list中只添加一个“张三”元素,就会报错,这是为什么???
作者:
黄晓鑫
时间:
2014-1-19 10:28
判断一下 if(it.next().equals("张三"))然后再删除
作者:
。子伤。
时间:
2014-1-21 14:53
哥们不会的,你描述的是不是有点问题呢
作者:
。子伤。
时间:
2014-1-21 14:54
import java.util.ArrayList;
import java.util.Iterator;
public class Itcast {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
// list.add("张三");
list.add("李四");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
list.remove("张三");
}
}
}
复制代码
作者:
qisikudingcha
时间:
2014-1-21 16:51
。子伤。 发表于 2014-1-21 14:54
ArrayList<String> list = new ArrayList<String>();
list.add("张三");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
list.remove("张三");
}
复制代码
我的意思是这种情况就会报错,但是下面这种情况就不会,这是为什么
ArrayList<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
list.remove("张三");
}
复制代码
作者:
向阳泪无痕
时间:
2014-1-23 10:42
本帖最后由 向阳泪无痕 于 2014-1-23 11:03 编辑
先看看你的代码
<p>while (it.hasNext()) {
08.
09. System.out.println(it.next());
10.
11. list.remove("张三"); //问题出在这,如果集合里面只有一个元素,而正好你又删除这个元素,那么这个时候这个集合就是空了,</p><p> //这个时候在判断 it.hasNext()就会报异常
12.
13. }
</p>
复制代码
把你的 while循环 改成下面的方法就对了。。。
while (it.hasNext()) { //改成这样就对了
String s = it.next();
System.out.println(s);
if("张三".equals(s))
it.remove();
}
复制代码
作者:
tuanjie
时间:
2014-1-23 11:41
对集合使用Iterator进行进行遍历时删除集合里面的元素,使用Iterator里面的remove方法删除集合里面的元素,而不用集合本身自带的remove方法。集合在遍历时,使用的是Iterator迭代器进行遍历,如果使用集合本身自带的remove方法进行删除时,集合的大小已经改变了,但是Iterator迭代器并不知道集合大小已经改变,遍历集合的时候依然使用原始的集合大小,就会出现问题。在对集合使用Iterator遍历的时候对集合进行添加时,也是使用迭代器里面的add方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2