<script language="javascript">
/**
*作者 :Fantasy
*Email: fantasycs@163.com
*QQ : 8635335
*Blog : http://www.blogjava.net/fantasy
*版本 :V1.1
*/
function HashMap()
{
/** Map 大小 **/
var size = 0;
/** 对象 **/
var entry = new Object();
/** 存 **/
this.put = function (key , value)
{
if(!this.containsKey(key))
{
size ++ ;
}
entry[key] = value;
}
/** 取 **/
this.get = function (key)
{
return this.containsKey(key) ? entry[key] : null;
}
/** 删除 **/
this.remove = function ( key )
{
if( this.containsKey(key) && ( delete entry[key] ) )
{
size --;
}
}
/** 是否包含 Key **/
this.containsKey = function ( key )
{
return (key in entry);
}
/** 是否包含 Value **/
this.containsValue = function ( value )
{
for(var prop in entry)
{
if(entry[prop] == value)
{
return true;
}
}
return false;
}
/** 所有 Value **/
this.values = function ()
{
var values = new Array();
for(var prop in entry)
{
values.push(entry[prop]);
}
return values;
}
/** 所有 Key **/
this.keys = function ()
{
var keys = new Array();
for(var prop in entry)
{
keys.push(prop);
}
return keys;
}
/** Map Size **/
this.size = function ()
{
return size;
}
/* 清空 */
this.clear = function ()
{
size = 0;
entry = new Object();
}
}
var map = new HashMap();
/*
map.put("A","1");
map.put("B","2");
map.put("A","5");
map.put("C","3");
map.put("A","4");
*/
/*
alert(map.containsKey("XX"));
alert(map.size());
alert(map.get("A"));
alert(map.get("XX"));
map.remove("A");
alert(map.size());
alert(map.get("A"));
*/
/** 同时也可以把对象作为 Key **/
/*
var arrayKey = new Array("1","2","3","4");
var arrayValue = new Array("A","B","C","D");
map.put(arrayKey,arrayValue);
var value = map.get(arrayKey);
for(var i = 0 ; i < value.length ; i++)
{
//alert(value[i]);
}
*/
/** 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key**/
/** 如果是自定义对象 那自己得重写 toString() 方法 否则 . 就是下面的结果 **/
function MyObject(name)
{
this.name = name;
}
/**
function MyObject(name)
{
this.name = name;
this.toString = function ()
{
return this.name;
}
}
**/
var object1 = new MyObject("小张");
var object2 = new MyObject("小名");
map.put(object1,"小张");
map.put(object2,"小名");
alert(map.get(object1));
alert(map.get(object2));
map.remove("xxxxx");
alert(map.size());
/** 运行结果 小名 小名 size = 1 **/
/** 如果改成复写toString()方法的对象 , 效果就完全不一样了 **/
</script>
分享到:
相关推荐
在JavaScript中,我们可以利用对象(object)作为HashMap的基础,因为JavaScript的对象本质上就是一个键值对的集合,其内部已经实现了哈希表的机制。 ### 自定义HashMap ```javascript class HashMap { ...
javaScript模拟的HashMap数据结构,可以方便的put和get。几乎和Java中HashMap类的功能一模一样。非常好用的!
在JavaScript中,HashMap是一种常用的键值对存储结构,它提供了快速的插入、删除和查找操作。JavaScript本身并不直接支持HashMap,但我们可以利用对象(Object)的特性来模拟HashMap的实现。这篇博客“基于...
在JavaScript中,HashMap是一种数据结构,它允许我们通过键(key)来存储和检索值(value),类似于对象,但提供了一种更高效的方式来处理大量数据。JavaScript原生并不支持HashMap,但开发者可以通过自定义类来实现...
最后的示例代码演示了如何创建一个HashMap对象,并使用它的方法来添加、更新、删除和检索数据。通过这个示例,我们可以看到JavaScript实现的HashMap类的实用性和灵活性。 理解了以上知识点,我们能够更好地掌握如何...
在JavaScript中,我们通常使用对象(Object)来模拟HashMap的行为,因为对象的属性名可以作为键,属性值则为对应的值。然而,这种模拟方式存在局限性,比如键必须是字符串或Symbol,且没有内置的方法来处理冲突。 ...
length 返回HashMap对象中键/值对的数量。 HashMap . size 返回HashMap对象中键/值对的数量。 ## Methods ### HashMap访问器方法 HashMap . prototype . set ( key , value ) 设置HashMap对象中键的值。 返回...
总结来说,JavaScript中的HashMap实现需要注意对象原型链的影响,使用`hasOwnProperty`来检查对象自身属性,以及通过创建无原型的裸对象来避免潜在问题。通过这种方式,可以创建一个更高效、更可控的键值对存储结构...
韩顺平培训学员面试资料+文档大全(涵盖...上面例子中的name和page就是名为book的对象中的property. 我们可以用delete来删除Object中的property: "delete book.name;". 除了Object, Date等buildin的对象外, 我们可以
对象是键值对的集合,它们类似于Java中的HashMap。在JavaScript中,创建对象通常是通过`new`操作符配合构造函数完成的。例如,创建一个名为`book`的对象,我们可以这样做: ```javascript var book = new Object();...
在 JavaScript 中,对象是一组数据的键值集合,类似于 Java 中的 HashMap。所有这些数据都是 Object 的属性。我们可以使用 constructor 函数来建立一个对象,例如 `new Date()`、`new Object()`。对象的属性可以通过...
模拟java中的HashMap类js类对象,可以与js的Array类对象配合使用
本文将详细介绍 JavaScript 中的数组函数、数字函数、字符串函数、表单验证、HashMap、堆栈、日期函数、call 函数等。 数组函数 JavaScript 中的数组函数提供了多种方法来操作数组,包括: * `push()`: 将参数...
`HashMap`作为一种常见的数据结构,它在JavaScript中的应用广泛,特别是在处理大量数据时,可以提供比原生对象更快的查找、添加和删除操作。`HashMap`是基于键值对存储的数据结构,其核心特性是通过哈希函数快速定位...
HashMap类在Java编程...在阅读《HashMap1.js》和《HashMap.js》这两个文件时,可以深入分析其JavaScript版本的HashMap实现,虽然与Java版本可能有所不同,但基本的哈希映射原理是相通的,有助于拓宽对哈希表的理解。
除了上述的实现,JavaScript还提供了`WeakMap`和`WeakSet`,它们的特殊之处在于其键(在`WeakMap`中)或元素(在`WeakSet`中)不会阻止垃圾回收,即使存在引用也不会阻止对象被清理。 总的来说,JavaScript的集合类...
9. **线程安全**:JavaScript在浏览器环境中是单线程的,因此Vector和HashMap在JavaScript中不存在,且没有线程安全的考虑。但在Node.js服务端环境中,有一些库提供了线程安全的集合操作。 10. **异常处理**:当一...
在JavaScript中,列表是一种常见的数据结构,用于存储和操作有序的数据集合。本篇文章将深入探讨JavaScript中的各种列表实现,包括数组、链表、队列、栈等,并通过具体实例来阐述它们的用法和特点。 首先,我们最常...
在JavaScript中,可以通过对象和数组来实现图,节点是对象,边可以通过引用或额外的关联数组来表示。 集合(Set)数据结构不包含重复元素,JavaScript从ES6开始提供了内置的`Set`对象,支持添加、删除元素以及检查...