虽然起名叫HashMap,但是请不要误解,跟hash没啥关系哈(尴尬笑)
以下为代码部分,并没有公开完整代码
/**
HashMap 对象,功能和用法与Java中类似, 支持序列化成字符串,用于Ajax请求
@author:sxchen
@version:1.2
@date: 2015-2-15 14:00
*/
function HashMap(){
/** Map 大小 **/
var size = 0;
/** Core Object **/
var entry = new Object();
/**
* 存对象
*/
this.put = function (key , value){
var message = "";
if(!this.isValidKey(key)){
message = "is invalid key";
}else{
if(!this.containsKey(key)){
size ++ ;
entry[key] = value;
}else{
message = "The key("+key+") is exsit in HashMap,please use a new key";
}
}
return message;
};
/**
* 取对象
*/
this.get = function (key){
if( this.containsKey(key) ){
return entry[key];
}
else{
return null;
}
};
/**
* 删除
*/
this.remove = function ( key ){
if( delete entry[key] )
{
size --;
}
};
/**
* Clear HashMap
*/
this.clear = function() {
if(this.isEmpty()){ return ; }
for(var prop in entry){
delete entry[prop];
}
size = 0;
};
/**
* 所有 Value
* @returns Array
*/
this.values = function (){
var values = new Array();
for(var prop in entry)
{
values.push(entry[prop]);
}
return values;
};
/**
* 所有 key
* @returns Array
*/
this.keys = function (){
var keys = new Array();
for(var prop in entry)
{
keys.push(prop);
}
return keys;
};
/**
* Map Size
* @returns Number
*/
this.size = function (){
return size;
};
/**
* @return Boolean
*/
this.isEmpty = function(){
return (this.size()==0);
};
/**
* 用于Ajax请求
* @returns String
*/
this.serialize = function(){
if(this.isEmpty()){ return null; }
var keys = this.keys();
var str = "";
for(var i in keys ){
var key = keys[i];
str = str+key+"="+this.get(key)+"&";
}
str = str.substring(0, str.length-1).toString() ;
return str;
};
/**
* equals Object
* @returns true/false
*/
this.equals = function(object){
return (this == object);
};
}