java中用于遍历集合对象的迭代和枚举
来源:互联网 发布:import org.apache包 编辑:程序博客网 时间:2024/05/14 15:21
迭代和枚举主要用于遍历集合对象。枚举可以应用于Vector和Hashtable,迭代主要用于集合对象。
迭代与枚举的差异:
* 枚举比迭代快两倍而且消耗更少的内存。
* 枚举更适合基本需求,而迭代是相对更安全,
* 因为在遍历集合的时候,迭代器会阻止其他线程修改集合对象。
* 如果有其他线程要修改集合对象,会立即抛出ConcurrentModificationException。
* 我们称其为快速失败迭代器,因为它快速,明了的抛出了异常。
下面是代码示例;
Vector <String> aVector = new Vector<String>(); aVector.add("I"); aVector.add("am"); aVector.add("really"); aVector.add("good");Enumeration <String> anEnum = aVector.elements(); Iterator <String> anItr = aVector.iterator();// Traversal using Iterator while(anItr.hasNext()) { if (<someCondition>) // This statement will throw ConcurrentModificationException. // Means, Iterator won't allow object modification while it is // getting traversed. Even in the same thread. aVector.remove(index); System.out.println(anItr.next()); }// Traversal using Enumeration while(anEnum.hasMoreElements()) { if (<someCondition>) aVector.remove(index); System.out.println(anEnum.nextElement()); }
但是迭代器提供了一种安全的方式,可以迭代过程中删除从底层集合中的元素。
看下迭代器的实现。Collection的其他实现类支撑了这里的remove()方法。
public interface Iterator { boolean hasNext(); Object next(); void remove(); // Optional }
上面的程序可以重写为:
while(anItr.hasNext()) { System.out.println(anItr.next()); if (<someCondition>) anItr.remove(); // Note: // Before using anItr.remove(), the Iterator should // point to any of its elements. The remove() removes the // element which the Iterator corrently pointing to. // Otherwise it will throw IllegalStateException }
需要注意的是:Iterator.remove()是唯一一种可以在迭代过程中安全修改集合的方式。
在枚举中,没有安全的方式可以在遍历集合的时候删除元素。
0 0
- java中用于遍历集合对象的迭代和枚举
- Java集合之枚举和迭代
- java集合中用foreach快速遍历以及通过迭代的删除
- Java集合的迭代(遍历)
- List集合存储字符串和自定义对象并遍历(for循环和迭代)
- 演示集合的迭代遍历
- 黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点
- JAVA中用于对象排序的比较器Comparable接口和compareTo()方法
- javascript递归、循环、迭代、遍历和枚举概念
- 集合框架类中的枚举和迭代
- 枚举和迭代
- java对集合和迭代的操作基础总结
- Java中Set集合 Iterator迭代遍历数组
- Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)
- Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)
- Map映射集合实现类HashMap的介绍和迭代遍历方法
- 迭代(遍历)时候不可以使用集合的remove和add方法,但可使用Java迭代器的remove和add方法
- C,C++和Java中用于排序的API
- 如何用键盘进行选定操作
- 微软2014实习生及校招秋令营技术类职位在线测试:2.K-th string
- NYOJ--小猴子下落
- (第一个jdbc入门项目)java实现的登录系统(mysql实现的)
- 使用mkdir建立多个目录
- java中用于遍历集合对象的迭代和枚举
- 代码注释
- Linux rpm 常用命令
- 让IE9以下版本的浏览支持html5标签,CSS3选择器,圆角,投影功能
- 重温模糊知识点之枚举举例
- 数据结构--算法(时间复杂度和空间复杂度)
- PAT 1010. 一元多项式求导 (25)
- 确定网站的浏览量、访问量
- python操作mysql数据库