java中的enumeration_Java Enumeration和Iterator之间的区别

问题

这两个接口之间的确切区别是什么?有没有比使用Iterator好的Enumeration?如果有人可以详细说明,参考文章将不胜感激。

#1 热门回答(131 赞)

查看Iterator接口的Java API规范,解释了Enumeration之间的差异:

迭代器与枚举的不同之处在于两种方式:迭代器允许调用者在迭代期间使用明确定义的语义从底层集合中删除元素。方法名称已得到改进。

底线是,38825468和Iterator都会给出连续的元素,但是Iterator会以这种方式得到改进,所以方法名称更短,并且有一个额外的remove方法。这是一个并排比较:

Enumeration Iterator

---------------- ----------------

hasMoreElement() hasNext()

nextElement() next()

N/A remove()

正如Java API规范中所提到的,对于较新的程序,Iterator应优先于Enumeration,因为"Iterator取代了Java集合框架中的Enumeration"。 (来自Iterator规格。)

#2 热门回答(33 赞)

迭代器快速失败。即当一个线程通过添加/删除操作更改集合,而另一个线程通过迭代器使用hasNext() or next()方法遍历它时,迭代器会通过投掷ConcurrentModificationException快速失败。迭代器的快速失败行为只能用于检测错误。像Hashtable,Vector这样的类的方法返回的枚举不是快速失败的,这是通过同步锁定当前Vector对象的代码块来实现的,这会占用大量时间。

#3 热门回答(11 赞)

"正式",它们应该与支持额外操作(例如,删除)的迭代器接口类似。通常,趋势是使用迭代器。

注意:此接口的功能由Iterator接口复制。此外,Iterator添加了一个可选的删除操作,并且具有更短的方法名称。新实现应考虑使用Iterator而不是Enumeration。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值