黑马程序员技术交流社区
标题:
迭代器怎么回事?
[打印本页]
作者:
于陈
时间:
2012-5-10 15:41
标题:
迭代器怎么回事?
Iterator it = list.iterator();
while (it.hasNext()) {
Integer i = (Integer)it.next();
System.out.println(i);
}
复制代码
那我直接用for循环遍历不是一样啊~还有HashMap只能用迭代器来遍历吗?
作者:
蒋映辉
时间:
2012-5-10 15:48
Iterator迭代器采用的是快速失败机制,就是假如你在访问一个集合的时候 其他线程修改了该集合,你用其他方式遍历都会显示修改后的量,而Iterator遍历会引发ConcurrentModificationException异常,这样可以避免共享资源而引发的潜在问题。
作者:
李啸
时间:
2012-5-10 15:49
是 你说的没错 也完全可以用for循环做 现在考虑的是效率的问题
hashmap是只能用迭代器来遍历虽然可以用map.entrySet()的方法和keySet()de但是最终还是用迭代器来做的
作者:
强文何
时间:
2012-5-10 16:09
迭代器就像一个指针一样,是一个可以遍历集合对象里的元素的接口。
for循环:主要是用于循环次数确定的循环.还可以用于循环输出数组里的每个元素
iterator迭代主要用于循环输出一个集合中的每个元素.
两种方式遍历:
1. HashMap hashmap = new HashMap();
2. Iterator iterator = hashmap.keySet().iterator();
3. while (iterator.hasNext()) {
4. Object value = hashmap.get(iterator.next());
5. }
1. HashMap hashmap = new HashMap();
2. Iterator iterator = hashmap.entrySet().iterator();
3. while (iter.hasNext()) {
4. Entry entry = (Entry) iter.next();
5. Object value= entry.getValue();
6. Object key =entry.getKey();
7. }
作者:
于陈
时间:
2012-5-10 16:09
蒋映辉 发表于 2012-5-10 15:48
Iterator迭代器采用的是快速失败机制,就是假如你在访问一个集合的时候 其他线程修改了该集合,你用其他方 ...
你说的这个快速失败机制有点像线程访问数据时的一种安全机制,又不是加锁的那种,但是好像 HashMap是没有线程安全机制的,而做服务器的时候,需要线程安全的时候应该直接用Hashtable吧?Hashtable有多个线程访问的时候jvm会给线程排队,前一个操作了后一个再操作,这个有点晕啊.....
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2