Câu trả lời:
Trước hết: a List
là a Collection
. Nó là một chuyên ngành Collection
, tuy nhiên.
A Collection
chỉ là: một bộ sưu tập các mặt hàng. Bạn có thể thêm nội dung, xóa nội dung, lặp lại nội dung và truy vấn có bao nhiêu nội dung trong đó.
A List
thêm thông tin về một chuỗi các công cụ được xác định vào đó: Bạn có thể lấy phần tử ở vị trí n , bạn có thể thêm phần tử ở vị trí n , bạn có thể xóa phần tử ở vị trí n .
Trong trường hợp Collection
bạn không thể làm điều đó: "phần tử thứ 5 trong bộ sưu tập này" không được xác định, vì không có thứ tự xác định.
Ngoài ra còn có các Bộ sưu tập chuyên biệt khác, ví dụ như Set
có thêm tính năng rằng nó sẽ không bao giờ chứa cùng một yếu tố hai lần.
Collection
là giao diện gốc cho hệ thống phân cấp Bộ sưu tập java. List
là một giao diện phụ xác định Bộ sưu tập theo thứ tự, các giao diện phụ khác Queue
thường sẽ lưu trữ các phần tử sẵn sàng để xử lý (ví dụ: ngăn xếp ).
Sơ đồ sau biểu thị mối quan hệ giữa các loại bộ sưu tập java khác nhau:
Map
không phải là một Collection
.
API Java là tốt nhất để trả lời điều này
Bộ sưu tập
Giao diện gốc trong hệ thống phân cấp bộ sưu tập. Một bộ sưu tập đại diện cho một nhóm các đối tượng, được gọi là các yếu tố của nó. Một số bộ sưu tập cho phép các yếu tố trùng lặp và những người khác thì không. Một số được ra lệnh và những người khác không có thứ tự. JDK không cung cấp bất kỳ triển khai trực tiếp nào của giao diện này: nó cung cấp các triển khai của các giao diện con cụ thể hơn như Set và List. Giao diện này thường được sử dụng để vượt qua các bộ sưu tập xung quanh và thao tác chúng ở nơi mong muốn tổng quát tối đa.
Danh sách (mở rộng Bộ sưu tập)
Một bộ sưu tập theo thứ tự (còn được gọi là một chuỗi). Người dùng giao diện này có quyền kiểm soát chính xác vị trí trong danh sách mỗi phần tử được chèn vào. Người dùng có thể truy cập các phần tử theo chỉ số nguyên (vị trí trong danh sách) và tìm kiếm các phần tử trong danh sách.
Không giống như các bộ, danh sách thường cho phép các yếu tố trùng lặp. Chính thức hơn, các danh sách thường cho phép các cặp phần tử e1 và e2 sao cho e1.equals (e2) và chúng thường cho phép nhiều phần tử null nếu chúng cho phép các phần tử null. Không thể tưởng tượng rằng ai đó có thể muốn thực hiện một danh sách cấm trùng lặp, bằng cách ném ngoại lệ thời gian chạy khi người dùng cố gắng chèn chúng, nhưng chúng tôi hy vọng việc sử dụng này là hiếm.
List và Set là hai lớp con của Collection.
Trong Danh sách, dữ liệu theo thứ tự cụ thể.
Trong Set, nó không thể chứa cùng một dữ liệu hai lần.
Trong Bộ sưu tập, nó chỉ lưu trữ dữ liệu không có thứ tự cụ thể và có thể chứa dữ liệu trùng lặp.
Bộ sưu tập là một giao diện cấp cao mô tả các đối tượng Java có thể chứa các bộ sưu tập của các đối tượng khác. Nó không cụ thể lắm về cách chúng được truy cập, liệu nhiều bản sao của cùng một đối tượng có thể tồn tại trong cùng một bộ sưu tập hay không, hay thứ tự là quan trọng. Danh sách là đặc biệt một lệnh bộ sưu tập của các đối tượng. Nếu bạn đặt các đối tượng vào một Danh sách theo một thứ tự cụ thể, chúng sẽ ở theo thứ tự đó.
Và việc quyết định nơi sử dụng hai giao diện này ít quan trọng hơn nhiều so với việc quyết định việc triển khai cụ thể mà bạn sử dụng là gì. Điều này sẽ có ý nghĩa đối với hiệu suất thời gian và không gian của chương trình của bạn. Ví dụ: nếu bạn muốn có một danh sách, bạn có thể sử dụng ArrayList hoặc LinkedList, mỗi danh sách sẽ có ý nghĩa đối với ứng dụng. Đối với các loại bộ sưu tập khác (ví dụ: Bộ), các cân nhắc tương tự sẽ được áp dụng.
Bộ sưu tập là giao diện Siêu của Danh sách, vì vậy mọi danh sách Java cũng là một thể hiện của bộ sưu tập. Các bộ sưu tập chỉ được lặp lại liên tục (và không theo thứ tự cụ thể nào) trong khi Danh sách cho phép truy cập vào một phần tử tại một vị trí nhất định thông qua get(int index)
phương thức.