js字典 字典则是以[键,值]的形式来存储元素。字典也称作映射,本文主要和大家分享js字典和散列表实例详解,希望能帮助到大家。
function Dictionary() {var items = {};this.has = function(key) {return key in items;}this.set = function(key,value){items[key] = value;}this.remove = function(Key){if(this.has(Key)){delete items[Key];return true;}return false;}this.get = function(key){return this.has(Key)?items[Key]:undefined;}this.values = function() {var values = {};for (var k in items) { //{1}if (this.has(k)) {values.push(items[k]); //{2}}}return values;};this.size = function(){return Object.keys(items).length; //{4}};this.sizeLegacy = function(){var count = 0;for(var prop in items) { //{5}if(items.hasOwnProperty(prop)) //{6}++count; //{7}}return count;};this.getItems = function() {return items;}}
登录后复制
散列表
function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 0;for(var i = 0;ihash值相同的时候有冲突
19 - GandalfHashTable.js:12 29 - JohnHashTable.js:12 16 - TyrionHashTable.js:12 16 - AaronHashTable.js:12 13 - DonnieHashTable.js:12 13 - AnaHashTable.js:12 5 - JonathanHashTable.js:12 5 - JamieHashTable.js:12 5 - SueHashTable.js:12 32 - MindyHashTable.js:12 32 - PaulHashTable.js:12 10 - NathanHashTable.js:24 5: sue@email.comHashTable.js:24 10: nathan@email.comHashTable.js:24 13: ana@email.comHashTable.js:24 16: aaron@email.comHashTable.js:24 19: gandalf@email.comHashTable.js:24 29: johnsnow@email.comHashTable.js:24 32: paul@email.com登录后复制
1. 分离链接
分离链接法包括为散列表的每一个位置创建一个链表并将元素存储在里面。它是解决冲突的最简单的方法,但是它在 HashTable 实例之外还需要额外的存储空间。重写put get remove print'方法
function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 0;for(var i = 0;i2. 线性探查
另一种解决冲突的方法是线性探查。当想向表中某个位置加入一个新元素的时候,如果索引
为index的位置已经被占据了,就尝试index+1的位置。如果index+1的位置也被占据了,就尝试index+2的位置,以此类推
function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 0;for(var i = 0;i3.创建更好的散列函数
我们实现的“lose lose”散列函数并不是一个表现良好的散列函数,因为它会产生太多的冲
突。如果我们使用这个函数的话,会产生各种各样的冲突。一个表现良好的散列函数是由几个方
面构成的:插入和检索元素的时间(即性能),当然也包括较低的冲突可能性。我们可以在网上
找到一些不同的实现方法,或者也可以实现自己的散列函数function HashTable() {var table = [];var loseloseHashCode = function (key) {var hash = 5381;for(var i = 0;i登录后复制
以上就是js字典和散列表实例详解的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2782259.html