Trước Java 2, Java cung cấp các lớp học đặc biệt như từ điển, Vector, Stack, và Properties để lưu trữ và xử nhóm đối tượng. Mặc dù các lớp này là khá hữu ích, họ thiếu một, chủ đề thống nhất trung ương. Vì vậy, cách mà bạn sử dụng Vector là khác với cách mà bạn sử dụng Properties.
The collections framework được thiết kế để đáp ứng một số mục tiêu.
- Khung có được hiệu suất cao. Việc triển khai cho các bộ sưu tập cơ bản (các mảng động, danh sách liên kết, cây cối và hashtables) là có hiệu quả cao.
- Khung phải cho phép các loại khác nhau của các bộ sưu tập để làm việc trong một cách tương tự và với một mức độ cao của khả năng tương tác.
- Mở rộng và / hoặc điều chỉnh một bộ sưu tập phải được dễ dàng.
Nhằm mục đích này, các khuôn khổ toàn bộ bộ sưu tập được thiết kế xung quanh một tập hợp các giao diện chuẩn. Một số triển khai tiêu chuẩn như LinkedList, HashSet, và TreeSet, các giao diện được cung cấp mà bạn có thể sử dụng như-là và bạn cũng có thể thực hiện bộ sưu tập của riêng mình, nếu bạn chọn.
Một khuôn khổ bộ sưu tập là một kiến trúc thống nhất cho các đại diện và thao tác các bộ sưu tập. Tất cả các bộ sưu tập các khuôn khổ nội dung chính sau:
- Interfaces: Đây là những kiểu dữ liệu trừu tượng mà đại diện cho bộ sưu tập. Giao diện cho phép các bộ sưu tập để được thao tác một cách độc lập của các chi tiết của đại diện của họ. Trong các ngôn ngữ hướng đối tượng, giao diện nói chung tạo thành một hệ thống phân cấp.
- Implementations, i.e., Classes: Đây là những triển khai cụ thể các giao diện bộ sưu tập. Về bản chất, họ là những cấu trúc dữ liệu tái sử dụng.
- Algorithms: Đây là những phương pháp thực hiện các tính toán hữu ích, chẳng hạn như tìm kiếm và phân loại, trên các đối tượng thực hiện các giao diện bộ sưu tập. Các thuật toán này được cho là đa hình: đó là, cùng một phương pháp có thể được sử dụng trên nhiều hiện thực khác nhau của giao diện thu phù hợp.
Ngoài các bộ sưu tập, khuôn khổ định nghĩa vài giao diện và các lớp bản đồ. Maps lưu trữ cặp khóa / giá trị. Mặc dù các bản đồ không phải là bộ sưu tập trong việc sử dụng đúng thời hạn, nhưng chúng được tích hợp hoàn toàn với các bộ sưu tập.
Collection Interfaces
Các khuôn khổ bộ sưu tập xác định một số giao diện. Phần này cung cấp một cái nhìn tổng quan của mỗi giao diện:
SN | INTERFACES WITH DESCRIPTION |
---|---|
1 | The Collection Interface This enables you to work with groups of objects; it is at the top of the collections hierarchy. |
2 | The List Interface This extends Collection and an instance of List stores an ordered collection of elements. |
3 | The Set This extends Collection to handle sets, which must contain unique elements |
4 | The SortedSet This extends Set to handle sorted sets |
5 | The Map This maps unique keys to values. |
6 | The Map.Entry This describes an element (a key/value pair) in a map. This is an inner class of Map. |
7 | The SortedMap This extends Map so that the keys are maintained in ascending order. |
8 | The Enumeration This is legacy interface and defines the methods by which you can enumerate (obtain one at a time) the elements in a collection of objects. This legacy interface has been superceded by Iterator. |
Collection Classes
Java cung cấp một tập các lớp học tập tiêu chuẩn mà thực hiện các giao diện Collection. Một số các lớp triển khai cung cấp đầy đủ mà có thể được sử dụng như là và những người khác là lớp trừu tượng, cung cấp triển khai thực hiện bộ xương được sử dụng như là điểm khởi đầu cho việc tạo ra bộ sưu tập cụ thể.
Các lớp học tập tiêu chuẩn này được tóm tắt trong bảng sau:
TT | MÔ TẢ CÁC CLASS |
---|---|
1 | AbstractCollection Implements most of the Collection interface. |
2 | AbstractList Extends AbstractCollection and implements most of the List interface. |
3 | AbstractSequentialList Extends AbstractList for use by a collection that uses sequential rather than random access of its elements. |
4 | LinkedList Implements a linked list by extending AbstractSequentialList. |
5 | ArrayList Implements a dynamic array by extending AbstractList. |
6 | AbstractSet Extends AbstractCollection and implements most of the Set interface. |
7 | HashSet Extends AbstractSet for use with a hash table. |
8 | LinkedHashSet Extends HashSet to allow insertion-order iterations. |
9 | TreeSet Implements a set stored in a tree. Extends AbstractSet. |
10 | AbstractMap Implements most of the Map interface. |
11 | HashMap Extends AbstractMap to use a hash table. |
12 | TreeMap Extends AbstractMap to use a tree. |
13 | WeakHashMap Extends AbstractMap to use a hash table with weak keys. |
14 | LinkedHashMap Extends HashMap to allow insertion-order iterations. |
15 | IdentityHashMap Extends AbstractMap and uses reference equality when comparing documents. |
Các class AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList và AbstractMap cung cấp triển khai thực hiện bộ xương của các giao diện bộ sưu tập cốt lõi, để hạn chế tối đa các nỗ lực cần thiết để thực hiện chúng.
Các lớp học di sản sau đây được xác định bởi java.util đã được thảo luận trong bài viết trước đây:
SN | CLASSES WITH DESCRIPTION |
---|---|
1 | Vector Điều này thực hiện một mảng động. Nó tương tự như ArrayList, nhưng với một số khác biệt. |
2 | Stack Stack là một lớp con của Vector mà thực hiện một last-in tiêu chuẩn, đầu ra stack. |
3 | Dictionary Từ điển là một lớp trừu tượng đại diện cho một kho lưu trữ chính / giá trị và hoạt động giống như Map. |
4 | Hashtable Hashtable là một phần của java.util ban đầu và là một thực hiện cụ thể của một từ điển. |
5 | Properties Thuộc tính là một lớp con của Hashtable. Nó được sử dụng để duy trì danh sách các giá trị mà trong đó chính là một String và giá trị cũng là một String. |
6 | BitSet A BitSet class creates a special type of array that holds bit values. This array can increase in size as needed. |
Collection Algorithms
Các bộ sưu tập khung định nghĩa một số thuật toán có thể được áp dụng cho các bộ sưu tập và bản đồ. Những thuật toán này được định nghĩa là phương pháp tĩnh trong lớp Collections.
Một số phương pháp có thể ném một ClassCastException, xảy ra khi một nỗ lực được thực hiện để so sánh các loại không tương thích, hoặc một UnsupportedOperationException, xảy ra khi một nỗ lực được thực hiện để sửa đổi một bộ sưu tập unmodifiable.
Bộ sưu tập xác định ba biến tĩnh: EMPTY_SET, EMPTY_LIST, và EMPTY_MAP. Tất cả đều không thay đổi.
Sử dụng Iterator
Thông thường, bạn sẽ muốn chu kỳ thông qua các yếu tố trong một bộ sưu tập. Ví dụ, bạn có thể muốn hiển thị mỗi phần tử.
Cách dễ nhất để làm điều này là sử dụng một iterator, đó là một đối tượng mà thực hiện một trong hai giao diện Iterator hoặc ListIterator.
Iterator cho phép bạn để chu kỳ thông qua một bộ sưu tập, nhận hoặc loại bỏ yếu tố. ListIterator mở rộng để cho phép Iterator traversal hai chiều của một danh sách và các sửa đổi của các yếu tố.
Sử dụng Comparator
Cả hai yếu tố TreeSet và cửa hàng TreeMap trong thứ tự sắp xếp. Tuy nhiên, nó là so sánh mà xác định chính xác những gì được sắp xếp phương tiện tự.
Giao diện này cho phép chúng tôi sắp xếp một bộ sưu tập được nhiều cách khác nhau. Ngoài ra giao diện này có thể được sử dụng để sắp xếp bất kỳ trường hợp của lớp nào (ngay cả lớp chúng ta không thể thay đổi).
Tổng kết:
Các khuôn khổ bộ sưu tập Java cung cấp cho các lập trình viên truy cập vào các cấu trúc dữ liệu được đóng gói sẵn cũng như các thuật toán để thao tác chúng.
Một bộ sưu tập là một đối tượng mà có thể giữ tham chiếu đến các đối tượng khác. Các giao diện bộ sưu tập khai báo các hoạt động có thể được thực hiện trên từng loại của bộ sưu tập.
Các lớp và các giao diện của các khuôn khổ bộ sưu tập được trong gói java.util.
0 nhận xét:
Đăng nhận xét