1. Collections framework trong Java
Collections framework trong Java cung cấp nhiều interface và lớp để lưu trữ các cấu trúc dữ liệu cũng như cài đặt các thuật toán khác nhau. Ví dụ: lớp LinkedList trong collections framework cung cấp cách lưu trữ và các thao tác trên danh sách liên kết đôi (doubly-linked list).
Các interface của collections framework
Java collections framework cũng cấp nhiều interface khác nhau. Những interface này bao gồm những phương thức để thao tác trên các cấu trúc dữ liệu.
Trong sơ đồ trên, Java collections framework gồm các interface gốc (root interface) là Collection, Map và Iterator.
Collection interface
Đừng nhầm lẫn giữa Collections framework và Collection interface. Collection interface là một interface gốc trong Collections framework. Collections framework còn có những interface khác là Map và Iterator. Những interface này có thể được kế thừa bởi các interface khác. Các interface List, Set, Queue kế thừa từ Collection interface.
List interface: Có các phương thức giúp lưu trữ và thao tác với tập hợp các phần tử giống như mảng. Các thao tác thường dùng là sắp xếp các phần tử, thêm hoặc xóa các phần tử.
Set interface: Cho phép chúng ta lưu trữ các phần tử trong những tập hợp khác nhau. Nhưng không thể có 2 phần tử giống nhau trong cùng một tập hợp.
Queue interface: Có thể được sử dụng khi chúng ta muốn lưu trữ và truy cập các phần tử theo cơ chế First In, First Out.
Các phương thức của collection interface
- add() thêm phần tử vào cấu trúc dữ liệu
- size() trả về kích thước (số lượng các phần tử) trong cấu trúc dữ liệu
- remove() xóa phần tử trong cấu trúc dữ liệu
- iterator() trả về một iterator để truy cập các phần tử trong cấu trúc dữ liệu
- addAll() thêm tất cả phần tử của một cấu trúc dữ liệu này vào một cấu trúc dữ liệu khác
- removeAll() xóa tất cả các phần tử được xác định trong cấu trúc dữ liệu
- clear() xóa tất cả các phần tử trong cấu trúc dữ liệu
Map interface
Map interface cho phép lưu trữ các phần tử theo cặp key, value. Key có tên duy nhất trong một Map và có thể sử dụng để truy xuất ra value của key đó.
Iterator interface
Iterator interface cung cấp những phương thức để truy cập vào các phần tử trong các cấu trúc dữ liệu có thể được lưu trữ với collections framework.
2. Lợi ích khi sử dụng collections framework
Có 2 lợi ích chính khi sử dụng collections framework:
- Chúng ta không cần viết code lưu trữ và xử lý từng cấu trúc dữ liệu
- Code của chúng ta sẽ được tối ưu tốt bởi framework
Hơn nữa, collections framework cũng hỗ trợ chúng ta những cấu trúc dữ liệu đặc biệt. Ví dụ:
- Nếu muốn lưu trữ cấu trúc dữ liệu mà các phần tử trong đó là duy nhất thì có thể sử dụng Set interface.
- Để lưu trữ cặp dữ liệu key, value thì sử dụng Map interface.
- Lớp ArrayList giúp lưu trữ các phần tử như mảng (array) nhưng mảng này có thể thay đổi kích thước.
Bên dưới là một ví dụ về sử dụng lớp ArrayList trong collections framework.
import java.util.ArrayList;
class Main {
public static void main(String[] args){
ArrayList<String> animals = new ArrayList<>();
// Add elements
animals.add("Dog");
animals.add("Cat");
animals.add("Horse");
System.out.println("ArrayList: " + animals);
}
}
Kết quả
ArrayList: [Dog, Cat, Horse]
Chúng ta hoàn toàn yên tâm về tối ưu code khi sử dụng các cấu trúc dữ liệu và thuật toán mà collections framework trong Java hỗ trợ.