Hashtable ArrayList 并不是javascript 固有的类,但是我们可以模拟一个
下面的code用起来会是这样 :
var table = new HashTable();
table.put(jsObjKey,jsObjValue);
var arrayList = new ArrayList();
arrayList.add(jsObj);
...
arrayList.size();
等等,相信看一下都能知道,这个模拟出来的Hashtable 和ArrayList 和java的十分相似,基本上在java里面怎么用的,在js里面我们就可以怎么用。
源代码:
// StringBuffer.
function StringBuffer(){
this.array = new Array();
}
StringBuffer.prototype.append = function (content){
this.array[eval(this.array.length)] = content;
}
StringBuffer.prototype.toString = function (){
return this.array.join("");
}
// ArrayList.
function ArrayList(){
this.index = -1;
this.array = new Array();
}
ArrayList.prototype.add = function (obj){
this.index = this.index + 1;
this.array[eval(this.index)] = obj;
}
ArrayList.prototype.get = function (index){return this.array[eval(index)];}
ArrayList.prototype.size = function (){return this.index+1;}
ArrayList.prototype.remove = function (index){
var j = 0;
var arrThis = this.array;
var arrTemp = new Array();
for(w=0;w<arrThis.length;w++){
if (eval(index)!=eval(w)) {
arrTemp[j] = arrThis[w];
j++;
}
}
this.array = arrTemp;
this.index = eval(j-1);
}
// HashTable Object 注意哦,T 可是大些的
function HashTable(){
this.arrValues = new ArrayList();
}
function HashTable_Map(){
var key = null;
var value = null;
}
HashTable.prototype.put = function (objKey,objValue){
var isAdd = true;
var arrThis = this.arrValues;
for(i=0;i<arrThis.size();i++){
var map = arrThis.get(i);
if (map.key==objKey){
map.value = objValue;
isAdd = false;
}
}
if (isAdd){
var Map = new HashTable_Map();
Map.key = objKey;
Map.value = objValue;
this.arrKeys = objKey;
this.arrValues.add(Map);
}
}
HashTable.prototype.get = function (objKey){
var arrThis = this.arrValues;
for(i=0;i<arrThis.size();i++){
var map = arrThis.get(i);
if (map.key==objKey) return map.value;
}
return null;
}
HashTable.prototype.keys = function (){
var arrKeys = new Array();
var arrThis = this.arrValues;
for(i=0;i<arrThis.size();i++){
var map = arrThis.get(i);
arrKeys[i] = map.key;
}
return arrKeys;
}
HashTable.prototype.remove = function (objKey){
for(i=0;i<this.arrValues.size();i++){
var map = this.arrValues.get(i);
if (objKey == map.key){
this.arrValues.remove(i);
}
}
}
分享到:
相关推荐
- **StringBuilder**:与 StringBuffer 类似,但不支持线程安全,因此在单线程环境中比 StringBuffer 性能更高。推荐在不需要线程安全的场景下使用。 3. **字符串分割函数** - **实现逻辑**:提供的代码示例展示...
- **存储结构**:Vector和ArrayList基于动态数组实现,适合随机访问,而LinkedList基于双向链表,适合顺序访问和插入删除操作。 - **线程安全性**:Vector是线程安全的,每个方法都进行了同步处理;ArrayList和...
3. **Vector与ArrayList、Hashtable与HashMap**:Vector和ArrayList都是动态数组,但Vector线程安全,ArrayList线程不安全。Hashtable是线程安全的字典,而HashMap不是,HashMap提供更快的查找速度。 4. **Iterator...
Hashtable和HashMap都是Java中的哈希表实现,但它们有不同的特点: * Hashtable:线程安全,同步锁机制,key和value不能为null * HashMap:不是线程安全的,但性能高于Hashtable,key和value可以为null 六、九大...
- `HashMap`和`Hashtable`都是基于哈希表实现的键值对存储结构,但它们之间存在一些关键性的不同: - `Hashtable`是线程安全的,所有方法都进行了同步处理,而`HashMap`是非线程安全的。 - `HashMap`允许使用`...
- **Thread 实现**:通过继承 `Thread` 类实现多线程。 - **Runnable 接口**:实现 `Runnable` 接口,将具体的线程任务分离出来。 - **Synchronized 关键字**:实现线程间的同步控制。 - `wait()` 和 `notify()` ...
- **ArrayList** 是基于动态数组实现的列表,提供快速的随机访问,但插入和删除元素在中间位置时效率较低。 - **LinkedList** 是双向链表实现,适合于频繁的插入和删除操作,但随机访问速度慢。 3. **HashTable, ...
Java开发工程师试卷六包含了多个Java编程相关的问题,涵盖了反射、多线程、ExecutorService接口、JavaScript语法、数据类型、线程安全、Bean作用域、Map容器、同步关键字以及HashMap和HashTable的区别等多个知识点。...
- **历史背景**:`Hashtable` 是基于早期的 `Dictionary` 类实现的,而 `HashMap` 则是 Java 1.2 版本引入的。 - **线程安全性**:`Hashtable` 是线程安全的,而 `HashMap` 不是。 - **允许 null 键/值**:`HashMap`...
- **知识点概述**:`HashMap` 和 `Hashtable` 都是 Java 中实现 Map 接口的类,但它们之间存在一些重要的区别。 - **应用场景**:了解这些区别有助于在实际开发中作出更合理的选择。 - **解答要点**: - **线程...
Ajax(Asynchronous JavaScript and XML)实现了局部刷新,通过JavaScript异步发送XMLHttpRequest请求,更新部分网页内容,提高用户体验。 13. JSP的四大作用域: - page:仅限当前JSP页面,生命周期短。 - ...
- List接口,有序可重复,常见实现如ArrayList和LinkedList。 - Set接口,无序不可重复,如HashSet和TreeSet。 - Collections是集合框架的工具类,提供各种静态方法操作集合。 15. Java的基本数据类型 Java有八...
6. **JavaScript实现的目标** JavaScript的目标在于使网页具有交互性。 7. **如何用Javascript得到标签的名字** 使用`nodeName`属性获取元素的标签名。 #### 四、Struts相关 1. **描述一下Struts的工作方式?...
- **ArrayList**:基于数组实现的列表,适用于随机访问元素的场景。 - **Vector**:与`ArrayList`类似,但`Vector`是线程安全的,适用于多线程环境。 - **LinkedList**:基于双向链表实现,插入和删除操作比基于...
- **ArrayList**:基于数组实现的列表,适合随机访问元素。 - **Vector**:与`ArrayList`类似,但是线程安全的。 - **LinkedList**:基于链表实现的列表,适合插入和删除操作。 ##### 11. EJB的组成部分及其功能 -...
11. 容器:ArrayList和LinkedList分别代表动态数组和链表实现,各有适用场景。HashSet和HashMap是基于哈希表的集合,HashSet不允许重复元素,HashMap存储键值对。 12. 单例模式:保证类只有一个实例,常用于配置...
ArrayList和LinkedList都是常用的列表实现,但在不同场景下它们的性能差异显著: - **ArrayList**:基于数组实现,适用于随机访问场景,如`get()`和`set()`操作。当需要频繁地进行此类操作时,ArrayList的性能更佳...
116、JavaScript中的对象. 25 117、function的用法 26 118、对象的继承 27 119、this的用法 29 120、Array in JavaScript 29 121、jsp有哪些内置对象?作用分别是什么? 31 122、jsp有哪些动作?作用分别是什么? 31 123...
- `HashTable`内部实现方法的同步,确保每次只有一个线程可以访问。 **17. ArrayList与Vector的区别** - **线程安全**:`Vector`的所有方法都是同步的,而`ArrayList`不是。 - **性能**:`ArrayList`通常比`Vector...