Java Collection là một bộ các class hỗ trợ nhóm và quản lý các Object
Đơn giản nhất, chúng ta có thể sử dụng Array nhưng như chúng ta đã biết trong thực tế sẽ có nhiều trường hợp phức tạp hơn. Ví dụ như với Array chúng ta không thể thay đổi kích thước, do đó các phần tử được thêm vào có thể không hiệu quả
Có 3 kiểu Interface chính trong Java là: Set, List, và Map
Các kiểu phụ là: Stack, Queue, và Deque
Các kiểu Interface
Set Interface
Set không cho phép trùng lặp và không cho phép truy cập các thành phần sử dụng index. Thay vào đó, nó cung cấp cách thức để kiểm tra xem các thành phần có tồn tại hay không
- EnumSet: Class hoạt động với các kiểu Enum
- HashSet: Lưu giữ danh sách các thành phần không theo thứ tự
- LinkedHashSet: tạo một collection mà sử dụng một linked list để lưu giữ các phần tử theo thứ tự chúng đã được chèn. Nó đảm bảo thứ tự được thêm vào.
- TreeSet: Đảm bảo rằng không có phần tử nào bị trùng lặp
- SortedSet: Cung cấp các phần tử được sắp xếp theo thứ tự
List Interface
List Interface trong Java kế thừa Collection và khai báo các hành vi của một collection mà lưu giữ một dãy các phần tử.
Các phần tử có thể được chèn hoặc được truy cập thông qua vị trí của chúng trong danh sách, bởi sử dụng chỉ mục xây dựng bắt đầu từ 0.
Một list có thể chứa nhiều bản sao phần tử.
- ArrayList: Hỗ trợ mảng động có thể tăng kích thước nếu cần. ArrayList được tạo với một kích cỡ ban đầu. Khi kích cỡ này bị vượt, collection tự động được tăng. Khi các đối tượng bị gỡ bỏ, ArrayList có thể bị giảm kích cỡ.
- LinkedList: Cung cấp một cấu trúc dữ liệu linked-list (dạng danh sách được liên kết).
- Vector: Vector trong Java triển khai một mảng động, giống như ArrayList nhưng nó là string safe
Map interface
Map interface trong Java đảm bảo tính duy nhất các key với value. Một key là một đối tượng mà bạn sử dụng để thu nhận một value.
Với một key và value đã cung cấp, bạn có thể lưu giữ value trong một đối tượng Map. Sauk hi giá trị được lưu, bạn có thể thu nhận nó bởi sử dụng key của nó.
- HashMap: Sử dụng một hashtable để triển khai Map Interface. Điều này cho phép thời gian thực thi các hoạt động cơ bản như get() và put().
- TreeMap: cung cấp các phương thức hiệu quả để lưu giữ các cặp key/value trong thứ tự được sắp xếp, và cho phép thu hồi nhanh chóng.
- Hashtable: lưu giữ các cặp key/value trong một hash table. Khi sử dụng một Hashtable, bạn xác định một đối tượng mà được sử dụng như là một key, và value mà bạn muốn liên kết tới key đó. Key này sau đó được hash, và hash code kết quả được sử dụng như là chỉ mục, tại đó value được lưu giữ bên trong table đó.
- EnumMap: là một cài đặt chuyên biệt để sử dụng với các enum keys. Nó kế thừa lớp Enum và AbstractMap.
- Properties: subclass của Hashtable. Nó được sử dụng để duy trì các danh sách của các value trong đó key là một String và value cũng là một String.
Kiểu phụ của Collection
- Stack: một class phụ của class Vector trong Java mà triển khai một last-in-first-out (LIFO) stack. Bạn có thể nghĩ về Stack như là một ngăn xếp thẳng đứng. Stack chỉ định nghĩa constructor mặc định, mà tạo một stack trống. Stack bao gồm tất cả phương thức được định nghĩa bởi class Vector, và một số phương thức khác của riêng nó.
- Queue: là kiểu cấu trúc dữ liệu mà các phần tử thêm vào là lấy ra được thực hiện theo cơ chế Fist – In – First – Out (FIFO), tức là phần tử nào thêm vào đầu tiên sẽ được lấy ra đầu tiên. Ví dụ mọi người xếp hàng đợi lên xe bus, người nào đứng trước sẽ được lên xe trước.
- Deque: là một collection mà nó hỗ trợ thêm và loại bỏ phần tử ở cả hai đầu. Deque là từ viết tắt của double ended queue.
Collection framework
Collection trong Java là một kiến trúc với lựa chọn tượng trưng cho các class và object. Ngoài ra, Collection trong Java tương trưng cho một phương thức thống nhất và tốt hơn để lưu trữ các class và object
Nó có thuật toán, các interface và các thực thi
Dưới đây là hệ thống cấp bậc trong Java Collection
Các phương thức
Phương thức | Mô tả |
public boolean add(Object element) | chèn một phần tử vào collection. |
public boolean addAll(Collection c) | để chèn các phần tử collection được chỉ định vào collection gọi phương thức này. |
public boolean remove(Object element) | Được sử dụng để xóa phần tử từ collection. |
public boolean removeAll(Collection c) | Được sử dụng để xóa tất cả các phần tử của collection được chỉ định từ collection gọi phương thức này. |
public boolean retainAll(Collection c) | Được sử dụng để xóa tất cả các thành phần từ collection gọi phương thức này ngoại trừ collection được chỉ định. |
public int size() | Trả lại tổng số các phần tử trong collection. |
public void clear() | Loại bỏ tổng số của phần tử khỏi collection. |
public boolean contains(Object element) | Được sử dụng để tìm kiếm phần tử. |
public boolean containsAll(Collection c) | Được sử dụng để tìm kiếm collection được chỉ định trong collection. |
public Iterator iterator() | Trả về một iterator. |
public Object[] toArray() | Chuyển đổi collection thành mảng (array). |
public boolean isEmpty() | Kiểm tra nếu collection trống. |
public boolean equals(Object element) | So sánh 2 collection. |
public int hashCode() | Trả về số hashcode của collection. |
Interator Interface
Phương thức | Miêu tả |
public boolean hasNext() | Trả về true nếu iterator còn phần tử kế tiếp phần tử đang duyệt. |
public Object next() | Trả về phần tử hiện tại và di chuyển con trỏ trỏ tới phần tử tiếp theo. |
public void remove() | Loại bỏ phần tử cuối được trả về bởi Iterator |