javascript中的哈希表和哈希映射
哈希表的内部表示形式为&&hashmap 在Java中,hashtable和hashmap在同步/异步操作方面是有区别的,否则内部表示是相同的 Javascript对象文字符号javascript中的哈希表和哈希映射,javascript,java,hash,hashmap,hashtable,Javascript,Java,Hash,Hashmap,Hashtable,哈希表的内部表示形式为&&hashmap 在Java中,hashtable和hashmap在同步/异步操作方面是有区别的,否则内部表示是相同的 Javascript对象文字符号 var obj = { e1: 1, e2: 2, e3: 3 }; 通过其内部哈希函数,可以直接用作哈希表和哈希映射。对象文字具有字符串或符号作为键 ES6还引入了window.Map,将任意值作为键 1) hashtable和h
var obj = {
e1: 1,
e2: 2,
e3: 3
};
通过其内部哈希函数,可以直接用作哈希表和哈希映射。对象文字具有字符串或符号作为键
ES6还引入了window.Map
,将任意值作为键
1) hashtable和hashmap的上述内部表示看起来正确吗?(或者)hashtable和hashmap的内部表示是否存在差异
2) Javascript object literal是否为hashtable/hashmap提供了O(1)计算而没有任何冲突?您的图片是实现a的一种方法-还有其他方法。您的图像是“单独链接”的一个示例,“开放寻址”是另一个常见的策略。到了Java 7,两者都使用了一种链接形式(查看它们的条目
类),但是Java 8引入了大量的重写(但不是,因为它是一个遗留类),以使用树结构而不是链表作为其链。这两个类使用的精确算法是一个实现细节,在不同版本之间可能会有所变化
“HashMap”和“Hashtable”只是JDK定义的类名,它们不一定对应于特定的哈希算法。JavaScript没有单独的“HashMap”和“Hashtable”概念,因为它们不需要它们。Java需要创建一个单独的HashMap
类,因为Hashtable
契约有问题,无法安全地更正
因此,要回答您的问题:
1) 有点;它不能正确地表示Java8的HashMap
,但它在概念上并不遥远Hashtable
仍然使用此算法,但您几乎不应该使用Hashtable
2) 正如您所说,JavaScript对象在封面下使用哈希表数据结构。这(通常)提供O(1)字段访问,但与任何哈希表实现一样,它必须处理冲突的可能性。如链接到的问题@overexchange中所述。请参阅此问题: