转载

HashMap注释翻译(二)

原文

HashMap注释翻译(二)

翻译

如果hashmap里存了许多的map,创建的时候指定一个充分大的容量可以使得map更有效的存储,相比于根据需要自动执行重新散列操作以扩展表。注意,使用很多相同hashcode的key是肯定会降低任何hash表的性能的。为了降低影响,当keys实现了Comparable接口,此类会对keys进行排序以切断联系,

单词

sufficiently:充分的

efficiently:有效的

perform:执行

as needed to:根据需要..以

ameliorate:改善、改进

impact:影响

原文

HashMap注释翻译(二)

翻译

注意,这个实现是非同步的(线程不安全的)。如果多个线程并发地访问一个hashmap,并且至少有一个进行了结构性的修改,那么它必须进行外部的同步。(结构性的修改是指增加或者删除键值对的操作;仅更改与实例已包含的键关联的值不是结构修改。)这通常是通过对自然封装map的对象进行同步来实现的。

单词

externally:外部地;外面地;外表上地

merely:仅仅, 只不过

associated with:参加;与…有关;与…相联系

typically:通常; 一般; 典型地; 具有代表性地; 不出所料; 果然

accomplished:完成; accomplish的过去分词和过去式

encapsulates:封装

原文

HashMap注释翻译(二)

翻译

如果没有这样的对象,应该用这个方法“包装”map。最好在创建时执行此操作,以防止意外地对map进行非同步访问。

单词

be best done at:最好是

wrapped: 包,裹; 用…包裹; 用…缠绕;

accidental:意外的; 偶然的; 偶然; 次要方面

access to:接近,去…的通路,使用…的机会,访问

原文

HashMap注释翻译(二)

注释

此类所有遍历集合的方法返回的迭代器都是会快速失效的:当hashmap在创建迭代器之后的任何时候发生了结构性修改,除非是通过迭代器自己的remove方法,就会抛出异常。因此,面对并发修改时,迭代器迅速利落地失败,而不是在未来不确定的时间冒着任意的、不确定行为的风险

单词

thus:因此、这样

in the face of:面对

rather than:而不

risking:使…冒风险; 冒…的风险; 冒险做; 大胆做; risk的现在分词

arbitrary:任意的; 武断的; 随心所欲的; 专横的; 专制的

undetermined:未确定的,未解决的; 不坚定的,不果断的

原文

HashMap注释翻译(二)

注释

注意,迭代器的快速失效的行为并不能确定,一般来说,不能做任何硬性保证,在多线程非同步并发修改时。理想情况下,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的翻译先告一段落,等后续再来补充。

原文  https://segmentfault.com/a/1190000021983480
正文到此结束
Loading...