JAVA & XML & JAVASCRIPT & AJAX & CSS
Web 2.0 技术储备............
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
77 随笔 :: 17 文章 :: 116 评论 :: 0 Trackbacks
<
2006年10月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(6)
给我留言
查看公开留言
查看私人留言
我参与的团队
成都JAVA俱乐部(0/0)
随笔分类
(84)
AJAX(2)
(rss)
CSS(8)
(rss)
DOM(1)
(rss)
HTML(1)
(rss)
JAVA(17)
(rss)
Javascript(37)
(rss)
JSP & Servlet(3)
(rss)
XML(3)
(rss)
其他东东(3)
(rss)
原创作品(3)
(rss)
数据库(2)
(rss)
设计模式(4)
(rss)
随笔档案
(77)
2011年6月 (1)
2010年4月 (2)
2009年1月 (2)
2008年4月 (1)
2006年10月 (3)
2006年9月 (1)
2006年8月 (2)
2006年6月 (1)
2006年5月 (2)
2006年4月 (5)
2006年3月 (57)
文章分类
(2)
Struts2(2)
(rss)
文章档案
(17)
2009年3月 (3)
2008年2月 (1)
2006年12月 (2)
2006年11月 (2)
2006年10月 (9)
Javascript
apache 源代码下载
File%20Listener.rar
prototype
prototype
很多美女
很多美女
绝对好的 Javascript 的Blog.......
(rss)
就是好!
美女
美女
最新随笔
1. [原创]美女图片爬虫程序实战!~用技术创造快感!
2. [原创]自己封装了个Tab标签控件,效果和浏览器一样。
3. 常用正则表达式整理(实用)
4. Weblogic中的描述符导致的应用性能问题.
5. Apache+Weblogic9.2均衡负载后,无法加载HTC控件问题。
6. 对spring框架的理解
7. Javascript 中的 Visitor 模式 → 实现树型结构任意节点遍历................
8. [原创]一个精巧的层控制工具 LayerUtil ....希望能满足大家的基本需求 [Javascript]
9. [原创] 一个完善的轻量级分页API Pager ! 有源代码.......
10. 关于 JDBC 资源回收的讨论 !
11. CSS 经典技巧大全 !
12. JAVASCRIPT & 动态绑定 & 闭包prototype
13. Java程序性能优化 !
14. 从 if else 到设计模式的转变 !
15. [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
16. window.setTimeout() & window.setInterval() 使用方式与参数传递问题!
17. Object-Oriented Event Listening through Partial Application in JavaScript
18. [JavaScript] 经典 Javascript 使用例子集合.................. [不断更新ing .......]
19. [Jscript] 无 event 事件实现拖拽效果....... [绝对经典]
20. [原创] 用 Javascript 封装了一个HashMap ..... 希望大家多多指教!
最新评论
1. re: [原创] 一个完善的轻量级分页API Pager ! 有源代码.......
好像跟查询的数据没有关联 ?
--龙歌
2. re: [原创]自己封装了个Tab标签控件,效果和浏览器一样。
这个东西有内存泄露~~~
--remixooo
3. re: Weblogic中的描述符导致的应用性能问题.[未登录]
艹 。垃圾,没说怎么设置合理
--xx
4. re: [原创]自己封装了个Tab标签控件,效果和浏览器一样。
支持
--WE
5. re: [原创]自己封装了个Tab标签控件,效果和浏览器一样。
不错,正在看
--szm
阅读排行榜
1. window.setTimeout() & window.setInterval() 使用方式与参数传递问题!(11586)
2. [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现](6653)
3. [原创]一个精巧的层控制工具 LayerUtil ....希望能满足大家的基本需求 [Javascript](5971)
4. Javascript 中的 Visitor 模式 → 实现树型结构任意节点遍历................(5557)
5. [原创]自己封装了个Tab标签控件,效果和浏览器一样。 (4874)
6. [原创]美女图片爬虫程序实战!~用技术创造快感!(4811)
7. [原创] 一个完善的轻量级分页API Pager ! 有源代码....... (4352)
8. 对spring框架的理解(4225)
9. Apache+Weblogic9.2均衡负载后,无法加载HTC控件问题。(3949)
10. 关于 JDBC 资源回收的讨论 !(3725)
评论排行榜
1. [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现](22)
2. [原创]自己封装了个Tab标签控件,效果和浏览器一样。 (19)
3. [原创] 一个完善的轻量级分页API Pager ! 有源代码....... (9)
4. window.setTimeout() & window.setInterval() 使用方式与参数传递问题!(8)
5. [原创]美女图片爬虫程序实战!~用技术创造快感!(5)
[原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
1
<
script language
=
"
javascript
"
>
2
/*
*
3
*作者 :Fantasy
4
*Email: fantasycs@163.com
5
*QQ : 8635335
6
*Blog : http://www.blogjava.net/fantasy
7
*版本 :V1.1
8
*/
9
function
HashMap()
10
{
11
/*
* Map 大小 *
*/
12
var
size
=
0
;
13
/*
* 对象 *
*/
14
var
entry
=
new
Object();
15
16
/*
* 存 *
*/
17
this
.put
=
function
(key , value)
18
{
19
if
(
!
this
.containsKey(key))
20
{
21
size
++
;
22
}
23
entry[key]
=
value;
24
}
25
26
/*
* 取 *
*/
27
this
.get
=
function
(key)
28
{
29
return
this
.containsKey(key)
?
entry[key] :
null
;
30
}
31
32
/*
* 删除 *
*/
33
this
.remove
=
function
( key )
34
{
35
if
(
this
.containsKey(key)
&&
(
delete
entry[key] ) )
36
{
37
size
--
;
38
}
39
}
40
41
/*
* 是否包含 Key *
*/
42
this
.containsKey
=
function
( key )
43
{
44
return
(key
in
entry);
45
}
46
47
/*
* 是否包含 Value *
*/
48
this
.containsValue
=
function
( value )
49
{
50
for
(
var
prop
in
entry)
51
{
52
if
(entry[prop]
==
value)
53
{
54
return
true
;
55
}
56
}
57
return
false
;
58
}
59
60
/*
* 所有 Value *
*/
61
this
.values
=
function
()
62
{
63
var
values
=
new
Array();
64
for
(
var
prop
in
entry)
65
{
66
values.push(entry[prop]);
67
}
68
return
values;
69
}
70
71
/*
* 所有 Key *
*/
72
this
.keys
=
function
()
73
{
74
var
keys
=
new
Array();
75
for
(
var
prop
in
entry)
76
{
77
keys.push(prop);
78
}
79
return
keys;
80
}
81
82
/*
* Map Size *
*/
83
this
.size
=
function
()
84
{
85
return
size;
86
}
87
88
/*
清空
*/
89
this
.clear
=
function
()
90
{
91
size
=
0
;
92
entry
=
new
Object();
93
}
94
}
95
96
var
map
=
new
HashMap();
97
98
/*
99
map.put("A","1");
100
map.put("B","2");
101
map.put("A","5");
102
map.put("C","3");
103
map.put("A","4");
104
*/
105
106
/*
107
alert(map.containsKey("XX"));
108
alert(map.size());
109
alert(map.get("A"));
110
alert(map.get("XX"));
111
map.remove("A");
112
alert(map.size());
113
alert(map.get("A"));
114
*/
115
116
/*
* 同时也可以把对象作为 Key *
*/
117
/*
118
var arrayKey = new Array("1","2","3","4");
119
var arrayValue = new Array("A","B","C","D");
120
map.put(arrayKey,arrayValue);
121
var value = map.get(arrayKey);
122
for(var i = 0 ; i < value.length ; i++)
123
{
124
//alert(value[i]);
125
}
126
*/
127
/*
* 把对象做为Key时 ,自动调用了该对象的 toString() 方法 其实最终还是以String对象为Key*
*/
128
129
/*
* 如果是自定义对象 那自己得重写 toString() 方法 否则
. 就是下面的结果 *
*/
130
131
function
MyObject(name)
132
{
133
this
.name
=
name;
134
}
135
136
/*
*
137
function MyObject(name)
138
{
139
this.name = name;
140
141
this.toString = function ()
142
{
143
return this.name;
144
}
145
}
146
*
*/
147
var
object1
=
new
MyObject(
"
小张
"
);
148
var
object2
=
new
MyObject(
"
小名
"
);
149
150
map.put(object1,
"
小张
"
);
151
map.put(object2,
"
小名
"
);
152
alert(map.get(object1));
153
alert(map.get(object2));
154
map.remove(
"
xxxxx
"
);
155
alert(map.size());
156
157
/*
* 运行结果 小名 小名 size = 1 *
*/
158
159
/*
* 如果改成复写toString()方法的对象 , 效果就完全不一样了
*
*/
160
161
</
script
>
posted on 2006-05-06 14:52
Web 2.0 技术资源
阅读(6653)
评论(22)
编辑
收藏
所属分类:
Javascript
评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性]
2006-05-06 16:39
123
up!
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性]
2006-05-08 15:01
dennis
很棒!
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性]
2006-05-08 23:53
Web 2.0 技术资源
@dennis
谢谢支持!
这个是在我上次写的HashMap上完全改进的~~~
谢谢 bbs.51js.com 上的朋友提出宝贵的意见。
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2006-05-27 09:16
山
顶个
写的不错
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2006-08-02 17:22
java player
谢谢主人。加油。
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2006-08-14 13:43
谭立平
楼主的实现思路挺不错,我在blog中把它改成了prototype版本的hashtable,其中修正了一个小bug ,就是删除集合中对象的时候,如果对象不存在,那么size仍然会减1 ,整体说还是一个不错的实现思路,呵呵,值得参考
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2006-08-15 10:48
Web 2.0 技术资源
@谭立平
谢谢 楼上的兄弟提出的BUG ~ 不过我自己测还没测出这个问题......
再次去参考了文档 :
/***********************************************/
delete 运算符
从对象中删除一个属性,或从数组中删除一个元素。
delete expression
expression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素。
说明
如果 expression 的结果是一个对象,且在 expression 中指定的属性存在,而该对象又不允许它被删除,则返回 false。
在所有其他情况下,返回 true。
/***********************************************/
在删除元素的时候增加了~ this.containsKey(key) 的条件限制。
增加了 clear 方法。
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2006-10-15 12:03
悠扬---靖宝华
郁闷,对类和对象,昨天我理解错了,今天好像是理解对了
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2006-10-22 12:08
Web 2.0 技术资源
修正了一个严重的BUG .
情况1
var array = new Array();
array.push("A"); array.length = 1
情况2 (想当然的为初始化长度,以为那样效率可以高那么一点点........)
var array = new Array( 3 );
array.push("A"); array.length = 4
区别大呢............. 不像JAVA里面....
他爷爷的~~!
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-01-09 12:55
js
做个东西先要有实用的地方, Array自己可以带名称索引,可变长度,JS变量也是可变的.
var hashTable = [];
添加元数
hashTable["A"] = "a";
hashTable["B"] = object;
得到元数
var value = haseTable["A"];
var value = haseTable["B"];
所以说包含你的所有功能``没有一点意义
splice()就是你的remove()只是功能比你强点
lenght就是你的size
put(),get()直接通过索引隐式调用[""]
另外比你多这些方法concat,join ,pop ,push,reverse,shift,slice,sort,toLocaleString
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-01-09 15:21
Web 2.0 技术资源
@js
设计这个Map 主要是为了填补 Javascript 中没有Map工具的不足。
你觉得你用Array 来代替 Map 那样你写的Javascript 会清晰明了吗?
那在Java里面何必需要HashSet, 直接用HashMap也能实现~
关键是让自己编码更清晰.... 数据类型更明了。
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-04-24 14:33
...
这个具有缓存功能吗?
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-04-24 14:36
fantasy
@...
具有缓存能力啊!
只是看你怎么去实现了....... 你自己把握缓存的生命周期。
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现][未登录]
2008-05-22 13:29
bobo
支持火狐吗?
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-05-23 09:41
fantasy
支持FireFox
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-07-02 11:40
traveller
@js
这位仁兄,说别人不对的时候请先肯定自己是对的,不然很丢人现眼耶
hashTable["A"] = "a";
hashTable["B"] = object;
这是Object就能提供的使用方法,而不是Array。用这种方式不会改变Array的长度,就是说你的length始终是0,"a"和object根本没有放进Array内部的集合中,因此也是无法遍历的。
splice()和remove()在这没有任何意义
那么,你搞清楚了楼主到底要解决什么问题了吗?
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-11-04 09:38
liz
顶,写的不错
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2008-12-04 17:25
clue
不小心路过...
最近正好也自己写了一个,你的实现还是会有些问题
如果有框架自定义了
Object.prototype
当你for(var p in entry)时,会把自定义的prototype里的内容也取出来
所以,最好定义一个PERFIX前缀来判断是否是自己存的值
-----------------------------
function MyMap(){}
MyMap.prototype = {
_length : 0,
_DEF_PERFIX : 'MY_MAP_KEY_',
size : function(){return this._length},
get : function(key){
return this[this._DEF_PERFIX+key];
},
put : function(key,value){
if(!this[this._DEF_PERFIX+key]){
this._length++;
}
this[this._DEF_PERFIX+key] = value;
return value;
},
remove : function(key){
if(this._length>0 && this[this._DEF_PERFIX+key]){
delete this[this._DEF_PERFIX+key];
this._length--;
return true;
}
return false;
},
getKeySet : function(){
var retArr = [];
for(var key in this){
if(key.length>this._DEF_PERFIX.length && key.indexOf(this._DEF_PERFIX)==0){
retArr.push(key.substr(this._DEF_PERFIX.length));
}
}
return retArr;
}
}
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2009-01-06 17:42
Web 2.0 技术资源
谢谢楼上的兄弟! 对头................. 的确存在那样的问题。
没考虑周全。
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2009-12-16 10:52
shouldbai
这个在IE6里面测试过吗?每次调用put方法都会报错,entry is undefined
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2010-03-23 11:41
多福多寿
好像都没有一点哈希算法在里面 怎么算得上hashmap呢
回复
更多评论
#
re: [原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
2010-05-05 11:25
tmp
这不是 HashMap 鉴定完毕。只是对 Object 封装一下,用处不大。
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
[原创]自己封装了个Tab标签控件,效果和浏览器一样。
Javascript 中的 Visitor 模式 → 实现树型结构任意节点遍历................
[原创]一个精巧的层控制工具 LayerUtil ....希望能满足大家的基本需求 [Javascript]
JAVASCRIPT & 动态绑定 & 闭包prototype
[原创] Javascript 封装 HashMap v1.1 ...... [充分利用Javascript 的特性 80 行代码实现]
window.setTimeout() & window.setInterval() 使用方式与参数传递问题!
Object-Oriented Event Listening through Partial Application in JavaScript
[JavaScript] 经典 Javascript 使用例子集合.................. [不断更新ing .......]
[Jscript] 无 event 事件实现拖拽效果....... [绝对经典]
[原创] 用 Javascript 封装了一个HashMap ..... 希望大家多多指教!
Powered by:
BlogJava
Copyright © Web 2.0 技术资源