黑马程序员技术交流社区

标题: 集合ArrayList能存储什么类型数据啊,求大神解答 [打印本页]

作者: songyu    时间: 2015-6-3 21:52
标题: 集合ArrayList能存储什么类型数据啊,求大神解答
ArrayList al = new ArrayList();
  al.add(“a”);
  al.add(“b”);
  al.add(“c”);
  Iterator it = al.iterator();
  while(it.hasNext()){
String s = (String)it.next();
if(s.equals(“c”)){
al.add(“c1”);
}
}
System.out.println(al);

这段代码会抛出ConcurrentModificationException异常呢
作者: 银哥    时间: 2015-6-3 22:21
你增加了字符,而迭代器还是原来的,遍历就会出错.
作者: 想要那片海    时间: 2015-6-3 22:26
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下
作者: 城北一直晴。    时间: 2015-6-3 22:29
ArrayList是接口List的实现类,所以推荐以List接口来使用。

作者: langxiao505    时间: 2015-6-3 22:49
楼上说的是,我把你的代码拿来弄了弄还没改过来,迭代器卡住了,还在解决
作者: shao122791159    时间: 2015-6-3 23:26
用迭代器遍历的过程当中别改变集合的长度。建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用list集合的   get() size() 方法组合遍历。
作者: 武汉小菜鸟    时间: 2015-6-3 23:41
集合可以存放任意类型的对象。Iterator在迭代的时候不能进行add().
作者: 灞波儿奔    时间: 2015-6-4 00:00
用迭代器遍历的过程当中别改变集合的长度,会引发《并发修改异常》

建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用list集合的   get() size() 方法组合遍历。
作者: songyu    时间: 2015-6-4 00:32
灞波儿奔 发表于 2015-6-4 00:00
用迭代器遍历的过程当中别改变集合的长度,会引发《并发修改异常》

建议修改方法:

原来是这样啊,谢了
作者: songyu    时间: 2015-6-4 00:33
想要那片海 发表于 2015-6-3 22:26
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下

我试过了 谢了
作者: songyu    时间: 2015-6-4 00:35
想要那片海 发表于 2015-6-3 22:26
普通的迭代器不支持边迭代边增删,你用List集合特有的ListIterator 试一下

谢了  我试过了
作者: songyu    时间: 2015-6-4 00:47
shao122791159 发表于 2015-6-3 23:26
用迭代器遍历的过程当中别改变集合的长度。建议修改方法:
1.用LIST集合的特有迭代器ListIterator
2.用lis ...

我试过了,小问题,纠结了半天好尴尬 啊
作者: 林RM    时间: 2015-6-4 03:38
该迭代器只支持删,不支持添加,查一下API文档
作者: 一袭蓝10    时间: 2015-6-4 07:05
看到这个帖子突然明白了一道题该怎么做了,谢谢
作者: 嘎路的米    时间: 2015-6-4 07:34
只要是对象,都可以存
作者: 夏尔    时间: 2015-6-4 10:31
并发修改异常。iterator 在遍历时不能操作数组
作者: 夏尔    时间: 2015-6-4 10:42
说错了 是集合
作者: 志行    时间: 2015-6-4 10:45
都是大神,多问问挺好的
作者: Aelous_6    时间: 2015-6-4 11:12
al.add(“c1”);  这句话引起了并发修改异常(currentmodificationexception) 在使用迭代器时不能使用集合对象调用能够改变集合结构的方法。
作者: 途中ms前进    时间: 2015-6-4 17:43
路过学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2