Java迭代与枚举
2017-02-22 16:55
246 查看
正如大家所知,迭代和枚举主要用于遍历集合对象。枚举可以应用于Vector和Hashtable,迭代主要用于集合对象。
迭代与枚举的差异:
* 枚举比迭代快两倍而且消耗更少的内存。
* 枚举更适合基本需求,而迭代是相对更安全,
* 因为在遍历集合的时候,迭代器会阻止其他线程修改集合对象。
* 如果有其他线程要修改集合对象,会立即抛出ConcurrentModificationException。
* 我们称其为快速失败迭代器,因为它快速,明了的抛出了异常。
下面是代码示例;
但是迭代器提供了一种安全的方式,可以迭代过程中删除从底层集合中的元素。
看下迭代器的实现。Collection的其他实现类支撑了这里的remove()方法。
上面的程序可以重写为:
需要注意的是:Iterator.remove()是唯一一种可以在迭代过程中安全修改集合的方式。
在枚举中,没有安全的方式可以在遍历集合的时候删除元素。
迭代与枚举的差异:
* 枚举比迭代快两倍而且消耗更少的内存。
* 枚举更适合基本需求,而迭代是相对更安全,
* 因为在遍历集合的时候,迭代器会阻止其他线程修改集合对象。
* 如果有其他线程要修改集合对象,会立即抛出ConcurrentModificationException。
* 我们称其为快速失败迭代器,因为它快速,明了的抛出了异常。
下面是代码示例;
看下迭代器的实现。Collection的其他实现类支撑了这里的remove()方法。
在枚举中,没有安全的方式可以在遍历集合的时候删除元素。
相关文章推荐
- Java中的枚举和迭代
- java中用于遍历集合对象的迭代和枚举
- Java集合之枚举和迭代
- Java迭代与枚举
- 再谈在Java中使用枚举
- Java中枚举详解(1)
- 深入探讨Java枚举的实现
- Java基础-枚举的两种基本模式
- 再谈在Java中使用枚举
- java新功能之一枚举
- 枚举 循环 Arrays的迭代
- Java与模式 迭代子模式 Iterator Pattern
- 定义java的枚举变量
- 9.Java中的集合、枚举、泛型【下】
- 传智播客 Java网络公开课一静态导入枚举以及可变参数
- 8.Java中的集合、枚举、泛型【上】
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- 关于Collection.sort和java的枚举
- Java中如何由枚举常量的ordinal值获得枚举常量对象
- java枚举