java HashTable的类描述翻译

这个类实现了一个hashtable,它映射键来找到相应的值。这个类中不能存入给键或者值存入空对象。

要想从hashtable中存储、获取对象,该键的对象必须实现hashcode和equals方法

有两个参数会影响HashTable的性能:初始化容器和载入因子。容量是hashtable容器的数量,初始化容量只用在初始化hashtable的时候。注意hashtable是开着的:防止"hash冲突",一个单一的容器存储多个实体,这些实体必须能被顺序的查询。载入因子是在容量达到允许的大小以前计算这个hashtable的新容量的增长率。初始容量和载入因子参数只意味着实现。具体的什么时候并且是否重新计算hash的值,依赖于具体实现。

一般而言,默认的载入因子(0.75)在时间和空间之间提供了一个折中。设置更大的值会减少空间的管理性能,但是会减少查询实体的性能。

初始化容量在空间和是否需要hash操作之间权衡控制,这个是耗时的操作。如果初始容量的值比实体的最大数量还要打,那么HashTable将会控制载入因子分割实体,不会重新计算hash值。但是,设置太大的初始容量会浪费空间。

如果有很多实体被放进Hashtable中,用一个总够大的容量创建这个hashtable,这样会比让它自动计算hash增加容量更有效率。

这个类在java2版本中重新被翻新实现了Map接口,因此它变成了集合框架的一部分。不像其它集合实现,Hashtable是同步的。

所有Hashtable的集合视图方法返回的iterator和listInterator方法集合迭代器都是快速失败的:迭代器被创建以后,如果Hashtable的结构被修改,如果不使用Iterator自有的删除或者添加方法,则会抛出ConcurrentModificationException异常。因此,在同步修改时,迭代器会快速清楚的抛出异常,而不是隐藏危险,即在不确定的某个时刻出现不确定的行为。Hashtable的keys和values方法返回的枚举不是快速失败的。

注意,一般而言,不可能完全保证在面对非同步的同步修改时,迭代器的快速失败特性不能确保它总是会快速失败。快速失败迭代器是基于一个服务模型抛出ConcurrentModificationException异常。因此,不建议依赖这个异常来写程序:迭代器的快速失败特性只应当被用来测试bug.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值