js实现arraylist
在JavaScript中,可以通过多种方式实现类似Java ArrayList的动态数组功能。以下是几种常见的方法:
使用原生数组
JavaScript的数组本身支持动态扩容和多种操作方法,类似于ArrayList:

// 创建空数组
const list = [];
// 添加元素(类似add方法)
list.push(1);
list.push(2);
// 插入元素(类似add(index, element))
list.splice(1, 0, 'newItem');
// 删除元素(类似remove)
list.splice(0, 1);
// 获取长度(类似size())
console.log(list.length);
// 遍历数组
list.forEach(item => console.log(item));
封装自定义类
可以创建一个自定义类来模拟ArrayList的核心功能:

class ArrayList {
constructor() {
this.items = [];
}
add(element) {
this.items.push(element);
}
insert(index, element) {
this.items.splice(index, 0, element);
}
remove(index) {
return this.items.splice(index, 1)[0];
}
get(index) {
return this.items[index];
}
size() {
return this.items.length;
}
clear() {
this.items = [];
}
}
// 使用示例
const myList = new ArrayList();
myList.add('Apple');
myList.add('Banana');
console.log(myList.size()); // 2
实现泛型支持
通过TypeScript可以添加类型支持:
class ArrayList<T> {
private items: T[];
constructor() {
this.items = [];
}
add(item: T): void {
this.items.push(item);
}
get(index: number): T {
return this.items[index];
}
}
// 使用示例
const numberList = new ArrayList<number>();
numberList.add(123);
性能优化版本
对于需要频繁插入/删除的场景,可以考虑使用链表或其他数据结构:
class OptimizedArrayList {
constructor() {
this.array = [];
this._size = 0;
}
add(element) {
this.array[this._size++] = element;
}
// 其他方法实现...
}
JavaScript数组已经提供了大多数ArrayList需要的功能,但在需要严格类型控制或特殊功能时,自定义实现会更合适。






