Java cung cấp các class đặt biệt như Dictionary, Vector, Stack và Properties để lưu trữ và thao tác với một nhóm các đối tượng. Mặc dù những class này khá hữu dụng, nhưng lại thiếu sự tập trung, thống nhất. Do đó, cách sử dụng Vector trong Java khác với cách sử dụng Properties.
Đến cuối cùng, toàn bộ collection framework này được thiết kế xung quanh một tập hợp các interface tiêu chuẩn. Vài class triển khai như LinkedList, HashSet và TreeSet của những interface này được cung cấp cho bạn có thể triển khai tập hợp nếu bạn chọn.
Một collections framework là một cấu trúc thống nhất để biểu diễn và thao tác các collection. Tất cả collections framework đều chứa:
Ngoài ra, framework định nghĩa một số map interfaces và class. Map lưu giữ các cặp key/value. Mặc dù các map không là collections về khái niệm, nhưng chúng hoàn toàn tương thích với collection.
Một Collection framework định nghĩa trước vài loại interface. Phần này cung cấp cho bạn tổng quan về mỗi interface:
STT | Interface và Miêu tả |
---|---|
1 | Collection Interface trong Java Cho phép bạn có thể làm việc với các nhóm đối tượng, nó là phần interface cha của tất cả các collection interface khác |
2 |
Kế thừa từ Collection và một kiểu List lưu trữ tập hợp các phần tử một cách có thứ tự |
3 |
Nó kế thừa Collection để thao tác với tập hợp, mà phải chứa các phần tử duy nhất |
4 | SortedSet Interface trong Java Kế thừa từ Set để thao tác với tập hợp được xếp thứ tự |
5 |
Liên kết giữa key duy nhất tới các value |
6 | Map.Entry Interface trong Java Mô tả một thành phần key/value trong map. Là một inner class của Map |
7 | SortedMap Interface trong Java Kế thừa từ Map để mà các key được duy trì một cách có thứ tự |
8 | Enumeration Interface trong Java Đây là một legacy interface và định nghĩa phương thức, theo đó bạn có thể liệt kê các thành phần của một tập hợp trong một tập hợp các đối tượng. |
Java cung cấp một tập hợp các lớp collection tiêu chuẩn có thể triển khai các Collection interface.
Bảng dưới đây tổng hợp các lớp collection chuẩn trong Java:
STT | Interface và Miêu tả |
---|---|
1 | Collection Interface trong Java Cho phép bạn có thể làm việc với các nhóm đối tượng, nó là phần interface cha của tất cả các collection interface khác |
2 |
Kế thừa từ Collection và một kiểu List lưu trữ tập hợp các phần tử một cách có thứ tự |
3 |
Nó kế thừa Collection để thao tác với tập hợp, mà phải chứa các phần tử duy nhất |
4 | SortedSet Interface trong Java Kế thừa từ Set để thao tác với tập hợp được xếp thứ tự |
5 |
Liên kết giữa key duy nhất tới các value |
6 | Map.Entry Interface trong Java Mô tả một thành phần key/value trong map. Là một inner class của Map |
7 | SortedMap Interface trong Java Kế thừa từ Map để mà các key được duy trì một cách có thứ tự |
8 | Enumeration Interface trong Java Đây là một legacy interface và định nghĩa phương thức, theo đó bạn có thể liệt kê các thành phần của một tập hợp trong một tập hợp các đối tượng. |
Các lớp AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList và AbstractMap trong Java cung cấp sự triển khai xương sống của các Collection Interface lõi, để tối thiểu hóa nỗ lực cần để thi hành chúng.
Các legacy class sau được định nghĩa bởi java.util, đã được bàn luận trong chương trước:
STT | Các lớp và Miêu tả |
---|---|
1 |
Lớp này triển khai một mảng động. Nó tương tự như ArrayList, nhưng có một số điểm khác nhau |
2 |
Stack là lớp phụ của lớp Vector mà triển khai last-in-first-out stack |
3 |
Dictionary là một abstract class mà biểu diễn một kho lưu giữ key/value và hoạt động khá giống Map |
4 |
Hashtable là một phần của java.util gốc và là một sự triển khai cụ thể của một Dictionary |
5 |
Properties là một lớp phụ của Hashtable. Nó được sử dụng để duy trì các danh sách giá trị trong đó key là một String và value cũng là một String |
6 |
Một lớp BitSet tạo một kiểu mảng đặc biệt mà giữ các giá trị bit. Mảng này có thể tăng kích cỡ nếu cần |
Collection Framework định nghĩa một số thuật toán có thể được áp dụng cho các Collection và Map. Những thuật toán này được định nghĩa như là các phương thức tĩnh (static) bên trong lớp Collection.
Một số phương thức có thể ném một ClassCastException, mà xảy ra khi cố gắng so sánh các kiểu không tương thích, hoặc một UnsupportedOperationException, mà xảy ra khi cố gắng sửa đổi một Unmodifiable Collectioon.
Các Collection định nghĩa 3 biến static là: EMPTY_SET, EMPTY_LIST, và EMPTY_MAP. Tất cả là không thể thay đổi.
STT | Thuật toán và Miêu tả |
---|---|
1 | Thuật toán Collection trong Java Đây là danh sách tất cả các thuật toán. |
Thường thì, bạn sẽ muốn tuần hoàn qua các phần tử trong một tập hợp. Ví dụ, có thể bạn muốn hiển thị mỗi phần tử.
Cách đơn giản nhất để thực hiện điều này là thuê một Iterator, là một đối tượng mà triển khai hoặc Iterator hoặc Listlerator interface.
Iterator cho bạn khả năng để tuần hoàn qua một tập hợp, kiếm được và gỡ bỏ các phần tử. ListIterator kế thừa Iterator để cho phép "vọc" song hướng một danh sách và sửa đổi các phần tử.
STT | Các phương thức Iterator và miêu tả |
---|---|
1 | Sử dụng Iterator trong Java Đây là danh sách tất cả phương thức và ví dụ về Iterator và ListIterator interface. |
Cả TreeSet và TreeMap đều lưu giữ các phần tử trong thứ tự đã được xếp thứ tự. Tuy nhiên, nó là comparator mà định nghĩa chính xác ý nghĩa của sorted order.
Interface này giúp chúng ta xếp thứ tự một tập hợp với bất kỳ số lượng mảng nào đã cho. Ngoài ra, interface này cũng có thể được sử dụng để xếp thứ tự bất kỳ instance nào của bất kỳ lớp nào (ngay cả các lớp chúng ta không thể chỉnh sửa).
STT | Phương thức Comparator và Miêu tả |
---|---|
1 | Sử dụng Comparator trong Java Đây là danh sách tất cả các phương thức và ví dụ về Comparator Interface. |
Tổng kết
Collection Framework trong Java cung cấp cho lập trình viên truy cập tới các cấu trúc dữ liệu đã đóng gói trước (Prepackage) cũng như các thuật toán để thao tác chúng.
Một Collection là một đối tượng mà có thể giữ các tham chiếu tới các đối tượng khác. Collection Interface khai báo các hoạt động mà có thể được thực hiện trên mỗi kiểu Collection.
Các Class và Interface của Collection Framework là trong gói java.util.
Unpublished comment
Viết câu trả lời