原文
翻译
如果hashmap里存了许多的map,创建的时候指定一个充分大的容量可以使得map更有效的存储,相比于根据需要自动执行重新散列操作以扩展表。注意,使用很多相同hashcode的key是肯定会降低任何hash表的性能的。为了降低影响,当keys实现了Comparable接口,此类会对keys进行排序以切断联系,
单词
sufficiently:充分的
efficiently:有效的
perform:执行
as needed to:根据需要..以
ameliorate:改善、改进
impact:影响
原文
翻译
注意,这个实现是非同步的(线程不安全的)。如果多个线程并发地访问一个hashmap,并且至少有一个进行了结构性的修改,那么它必须进行外部的同步。(结构性的修改是指增加或者删除键值对的操作;仅更改与实例已包含的键关联的值不是结构修改。)这通常是通过对自然封装map的对象进行同步来实现的。
单词
externally:外部地;外面地;外表上地
merely:仅仅, 只不过
associated with:参加;与…有关;与…相联系
typically:通常; 一般; 典型地; 具有代表性地; 不出所料; 果然
accomplished:完成; accomplish的过去分词和过去式
encapsulates:封装
原文
翻译
如果没有这样的对象,应该用这个方法“包装”map。最好在创建时执行此操作,以防止意外地对map进行非同步访问。
单词
be best done at:最好是
wrapped: 包,裹; 用…包裹; 用…缠绕;
accidental:意外的; 偶然的; 偶然; 次要方面
access to:接近,去…的通路,使用…的机会,访问
原文
注释
此类所有遍历集合的方法返回的迭代器都是会快速失效的:当hashmap在创建迭代器之后的任何时候发生了结构性修改,除非是通过迭代器自己的remove方法,就会抛出异常。因此,面对并发修改时,迭代器迅速利落地失败,而不是在未来不确定的时间冒着任意的、不确定行为的风险
单词
thus:因此、这样
in the face of:面对
rather than:而不
risking:使…冒风险; 冒…的风险; 冒险做; 大胆做; risk的现在分词
arbitrary:任意的; 武断的; 随心所欲的; 专横的; 专制的
undetermined:未确定的,未解决的; 不坚定的,不果断的
原文
注释
注意,迭代器的快速失效的行为并不能确定,一般来说,不能做任何硬性保证,在多线程非同步并发修改时。理想情况下,fail-fast的迭代器抛出异常。因此,如果基于此异常写程序可能会出错:fail-fast机制应该仅仅用来检测bug。
单词
note:v,注意
as it is:事实上
generally speaking:一般来说
in the presence:在场的
unsynchronized:非同步的
concurrent:并发
basis:原因;缘由;基准;准则;方式;基础
on a best-effort basis:尽最大努力
correctness:正确性
总结
1、HashMap 是基于哈希表的 Map 接口的实现,不保证键值对的顺序,甚至不保证该顺序不变
2、HashMap的性能主要取决于容量(哈希表桶的数量)和扩容因子,平衡时间和空间上的开销
3、HashMap是非同步的,线程不安全;fail-fast机制在并发结构修改时抛出异常,但是并不能确保有效。这里同步的方法后续研究
4、从源码看,Tie-break貌似是用于树的叶子顺序的指定,等研究了Map中树的相关知识再开修订
翻译过程中,感觉还是比较吃力,有部分单词的不理解,有对HashMap知识的缺乏。HashMap的翻译先告一段落,等后续再来补充。