Bạn đang muốn hiểu sâu hơn về các cấu trúc dữ liệu trong TypeScript? Hãy cùng khám phá cách tạo ra một triển khai mảng tùy chỉnh vượt ra ngoài kiểu mảng có sẵn. Bài viết này sẽ hướng dẫn bạn xây dựng một lớp ArrayList
mô phỏng một số chức năng của mảng nguyên thủy trong JavaScript.
Lớp ArrayList
Chúng ta sẽ bắt đầu bằng cách định nghĩa lớp ArrayList
như sau:
class ArrayList<T> { private items: T[]; private size: number; constructor() { this.items = []; this.size = 0; } // Methods will be implemented here
}
ArrayList
được thiết kế theo kiểu generic, cho phép nó chứa bất kỳ kiểu dữ liệu nào T
. Chúng ta sử dụng mảng riêng tư items
để lưu trữ các phần tử và thuộc tính size
để theo dõi số lượng phần tử hiện có.
Các thao tác cơ bản
Cùng triển khai một vài thao tác cơ bản với mảng:
1. Thêm phần tử
public add(element: T): void { this.items[this.size] = element; this.size++;
}
2. Lấy phần tử theo chỉ mục
public get(index: number): T { if (index < 0 || index >= this.size) { throw new Error("Index out of bounds"); } return this.items[index];
}
3. Xóa phần tử
public remove(index: number): T { if (index < 0 || index >= this.size) { throw new Error("Index out of bounds"); } const removedItem = this.items[index]; for (let i = index; i < this.size - 1; i++) { this.items[i] = this.items[i + 1]; } this.size--; return removedItem;
}
Tính năng bổ sung
Chúng ta sẽ thêm một số phương thức khác để tăng tính tiện dụng cho ArrayList
:
4. Lấy kích thước
public getSize(): number { return this.size;
}
5. Kiểm tra rỗng
public isEmpty(): boolean { return this.size === 0;
}
6. Xóa toàn bộ phần tử
public clear(): void { this.items = []; this.size = 0;
}
Sử dụng ArrayList
Dưới đây là cách sử dụng lớp ArrayList
tùy chỉnh của chúng ta:
const list = new ArrayList<number>(); list.add(1);
list.add(2);
list.add(3); console.log(list.get(1)); // Output: 2
console.log(list.getSize()); // Output: 3 list.remove(1);
console.log(list.getSize()); // Output: 2
console.log(list.get(1)); // Output: 3 list.clear();
console.log(list.isEmpty()); // Output: true
Kết luận
Bằng cách tự triển khai lớp ArrayList
, chúng ta đã có thêm cái nhìn sâu sắc về cách mảng hoạt động bên trong. Kiến thức này rất hữu ích khi tối ưu mã hoặc làm việc với các cấu trúc dữ liệu phức tạp hơn.
Hãy nhớ rằng, mặc dù triển khai này mang tính giáo dục, nhưng các mảng tích hợp sẵn trong TypeScript đã được tối ưu hóa rất tốt và nên được sử dụng trong phần lớn các trường hợp thực tế. Tuy nhiên, hiểu được những khái niệm này sẽ giúp bạn trở thành một lập trình viên TypeScript giỏi hơn.
Chúc bạn code vui vẻ!