Collection trong java

0
57
Rate this post

Bộ sưu tập và Bộ sưu tập trong Java

“Bộ sưu tập” và “Bộ sưu tập” trong Java là hai khái niệm khác nhau.

Bộ sưu tập trong Java là một framework cung cấp kiến trúc để lưu trữ và thao tác với nhóm các đối tượng. Tất cả các hoạt động như tìm kiếm, sắp xếp, chèn, xóa,… có thể được thực hiện bởi Java Collection.

Bộ sưu tập trong Java là một giao diện gốc trong hệ thống cấp bậc Collection. Java Collection cung cấp nhiều giao diện (Set, List, Queue, Deque vv) và các lớp (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet vv).

colection vs collections trong java

Hệ thống cấp bậc Collection trong Java

Gói java.util chứa tất cả các lớp và giao diện của Collection.

hệ thống cấp bậc collection trong java

Dưới đây là mô tả của các giao diện chính trong Collection

  • Set: là một bộ sưu tập không thể chứa 2 giá trị trùng lặp. Set được sử dụng để biểu diễn các tập hợp, ví dụ như tập lá bài, thời khóa biểu của học sinh, các tiến trình đang chạy trên máy tính,…

  • List: là một bộ sưu tập có thứ tự (đôi khi còn được gọi là một chuỗi). List có thể chứa các phần tử trùng lặp. List có quyền kiểm soát chính xác vị trí các phần tử được chèn vào và có thể truy cập chúng bằng chỉ số (vị trí của chúng).

  • Queue (hàng đợi): là một bộ sưu tập được sử dụng để chứa các phần tử trước khi xử lý. Bên cạnh các thao tác cơ bản của bộ sưu tập, Queue cung cấp các thao tác bổ sung như chèn, lấy ra và kiểm tra. Queue có thể được sử dụng như là FIFO (first-in, first-out – vào trước, ra trước).

  • Deque: là một bộ sưu tập được sử dụng để chứa các phần tử trước khi xử lý. Ngoài các thao tác cơ bản của bộ sưu tập, một Deque cung cấp các thao tác bổ sung như chèn, lấy ra và kiểm tra. Deque có thể được sử dụng như là FIFO (first-in, first-out – vào trước, ra trước) và LIFO (last-in, first-out – vào sau, ra trước). Trong một Deque, tất cả các phần tử mới có thể được chèn vào, lấy ra và lấy ra ở cả hai đầu.

  • Map: là một ánh xạ mỗi key tương ứng với một giá trị. Map không thể chứa giá trị trùng lặp. Mỗi key có thể ánh xạ đến nhiều nhất một giá trị.

Dưới đây là mô tả của 2 giao diện được sắp xếp của Set mà Map

  • SortedSet: là một Set chứa các phần tử theo thứ tự tăng dần.

  • SortedMap: là một Map chứa các phần tử được sắp xếp theo thứ tự tăng dần của key của chúng. Các SortedMap được sử dụng cho các bộ sưu tập theo thứ tự tự nhiên của cặp key/value, ví dụ như từ điển và danh bạ điện thoại.

Giao diện Iterable

Giao diện Iterable chứa dữ liệu thành viên của giao diện Iterator.

Giao diện Iterator

Giao diện Iterator cung cấp phương tiện để lặp lại các thành phần từ đầu đến cuối của một bộ sưu tập.

Các phương thức của giao diện Iterator

Chỉ có ba phương thức trong giao diện Iterator như sau:

  • 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. Nó hiếm khi được sử dụng.

Các phương thức của giao diện Collection trong Java

Có nhiều phương thức được khai báo trong giao diện Collection như sau:

  • public boolean add(Object element): Được sử dụng để chèn một phần tử vào bộ sưu tập.

  • public boolean addAll(Collection c): Được sử dụng để chèn các phần tử của bộ sưu tập được chỉ định vào bộ sưu tập gọi phương thức này.

  • public boolean remove(Object element): Được sử dụng để xóa phần tử từ bộ sưu tập.

  • public boolean removeAll(Collection c): Được sử dụng để xóa tất cả các phần tử của bộ sưu tập được chỉ định từ bộ sưu tập 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ừ bộ sưu tập gọi phương thức này ngoại trừ bộ sưu tập được chỉ định.

  • public int size(): Trả lại tổng số các phần tử trong bộ sưu tập.

  • public void clear(): Loại bỏ tất cả các phần tử khỏi bộ sưu tập.

  • 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 bộ sưu tập được chỉ định trong bộ sưu tập.

  • public Iterator iterator(): Trả về một iterator.

  • public Object[] toArray(): Chuyển đổi bộ sưu tập thành một mảng.

  • public boolean isEmpty(): Kiểm tra nếu bộ sưu tập trống.

  • public boolean equals(Object element): So sánh hai bộ sưu tập.

  • public int hashCode(): Trả về số hashcode của bộ sưu tập.

Ví dụ về bộ sưu tập trong Java

File: CollectionExample1.java

Output:

Bộ sưu tập không generic và generic

Bộ sưu tập trong Java là không generic trước JDK 1.5. Từ JDK 1.5 là generic.

Generic Collection trong Java cho phép chỉ có một kiểu đối tượng trong bộ sưu tập. Đây là một kiểu an toàn vì không cần phải ép kiểu tại runtime.

Ví dụ về bộ sưu tập không generic – kiểu cũ

Ví dụ về bộ sưu tập generic – kiểu mới

Trong bộ sưu tập generic, chúng ta phải chỉ định kiểu dữ liệu trong <...>. Từ JDK 1.5, khi sử dụng ArrayList, chúng ta bắt buộc phải chỉ định kiểu dữ liệu cho nó. Nếu bạn cố gắng thêm một đối tượng có kiểu khác vào, chương trình sẽ báo lỗi compile-time.

Ví dụ generic collection trong java

Duyệt các phần tử của bộ sưu tập

Có 2 cách để duyệt các phần tử của bộ sưu tập trong Java.

  1. Sử dụng Iterator interface.
  2. Sử dụng vòng lặp for-each.

Ví dụ 1: ArrayListExample1.java

Output:

Ví dụ 2: HashSetExample1.java

Output:


Edited by Dnulib. Visit us for more articles on Java Collections.