function HashMap(){ 2 3 var ItemCollection=new Array(); 4 //private 5 6 this.getMapCollection=function (){ 7 return ItemCollection; 8 } 9 10 var MapItem=function (key,value){ 11 12 this.key=(key==null?"":key); 13 this.value=(value==null?"":value); 14 15 this.getKey=function (){ 16 return this.key; 17 } 18 19 this.getValue=function (){ 20 return this.value; 21 } 22 23 this.setKey=function (key){ 24 this.key=key; 25 } 26 27 this.setValue=function (value){ 28 this.value=value; 29 } 30 } 31 32 this.put=function (key,value){ 33 var item=new MapItem(); 34 if(isItemExist(key)==false) 35 { 36 item.setKey(key); 37 item.setValue(value); 38 ItemCollection[ItemCollection.length]=item; 39 }else { 40 item=getItem(key); 41 item.setValue(value); 42 } 43 } 44 45 this.putAll=function (itemCollection){ 46 if (HashMap.prototype.isPrototypeOf(itemCollection)) 47 { 48 connectMap(itemCollection.getMapCollection()); 49 50 return true; 51 52 } else { 53 if (Array.prototype.isPrototypeOf(itemCollection)) 54 { 55 for (var j=0;j<itemCollection.length ;j++ ) 56 { 57 if (MapItem.prototype.isPrototypeOf(itemCollection[j])==false) 58 { 59 return false; 60 } 61 } 62 63 connectMap(itemCollection); 64 65 return true; 66 } 67 } 68 } 69 70 var connectMap=function (itemsArray){ 71 if (ItemCollection.length==0) 72 { 73 for (var i=0;i<itemsArray.length;i++) 74 { 75 ItemCollection[i]=itemsArray[i]; 76 } 77 } else { 78 var j= (parseInt(itemsArray.length)+parseInt(ItemCollection.length)); 79 var orginalLength=parseInt(ItemCollection.length); //save the length of ItemCollection before putting 80 81 for (var i=parseInt(ItemCollection.length) ; i<j; i++ ) 82 { 83 ItemCollection[i]=itemsArray[i-orginalLength]; 84 } 85 } 86 } 87 88 var getItem=function (key){ 89 var item=new MapItem(); 90 91 for(var i=0;i<ItemCollection.length;i++) 92 { 93 if(ItemCollection[i].getKey()==key) 94 { 95 item=ItemCollection[i]; 96 break; 97 } 98 } 99 return item; 100 } 101 102 this.get=function (key){ 103 104 var value=""; 105 106 for(var i=0;i<ItemCollection.length;i++) 107 { 108 if(ItemCollection[i].getKey()==key) 109 { 110 value=ItemCollection[i].getValue(); 111 break; 112 } 113 } 114 return value; 115 116 } 117 118 var isItemExist=function (key){ 119 120 var item=new MapItem(); 121 item.setKey(""); 122 item.setValue(""); 123 var flag=false; 124 125 for(var i=0;i<ItemCollection.length;i++) 126 { 127 128 if(ItemCollection[i].getKey()==key) 129 { 130 flag=true; 131 break; 132 } 133 134 } 135 136 return flag; 137 138 } 139 140 this.remove=function (key){ 141 for (var i=0;i<ItemCollection.length;i++) 142 { 143 144 if (ItemCollection[i].getKey()==key) 145 { 146 var mid=ItemCollection.length/2; 147 148 if (i<mid) 149 { 150 for (var j=i;j>0 ;j-- ) 151 { 152 ItemCollection[j]=ItemCollection[j-1]; 153 } 154 } else { 155 for (var j=i;j<ItemCollection.length ;j++ ) 156 { 157 ItemCollection[j]=ItemCollection[j+1]; 158 } 159 } 160 ItemCollection.length=ItemCollection.length-1; 161 } 162 } 163 } 164 165 this.removeAll=function (){ 166 ItemCollection.length=0; 167 } 168 169 this.getSize=function (){ 170 return ItemCollection.length; 171 } 172 173 174 this.contain=function (key){ 175 for (var i=0;i<ItemCollection.length ;i++ ) 176 { 177 if (ItemCollection[i].getKey()==key) 178 { 179 return true; 180 } 181 } 182 183 return false; 184 } 185}