Sự khác biệt giữa Danh sách và Tập hợp

Mục lục:

Sự khác biệt giữa Danh sách và Tập hợp
Sự khác biệt giữa Danh sách và Tập hợp

Video: Sự khác biệt giữa Danh sách và Tập hợp

Video: Sự khác biệt giữa Danh sách và Tập hợp
Video: [Sách nói full] Rich Habits Poor Habits - Sự khác biệt giữa người giàu và người nghèo 2024, Tháng bảy
Anonim

Sự khác biệt chính - Danh sách so với Tập hợp

Hầu hết các ngôn ngữ lập trình đều sử dụng mảng để lưu trữ một tập dữ liệu cùng kiểu. Một nhược điểm lớn của mảng là, một khi kích thước mảng được khai báo, nó không thể được sửa đổi. Nếu người lập trình muốn lưu trữ một giá trị vượt quá kích thước mảng, thì anh ta nên tạo một mảng mới và sao chép các phần tử hiện có vào mảng mới. Trong những tình huống này, bộ sưu tập có thể được sử dụng. Có thể thêm phần tử, xóa phần tử và nhiều thao tác khác với sự hỗ trợ của các bộ sưu tập. Có nhiều loại tập hợp khác nhau có sẵn trong các ngôn ngữ lập trình như Java. Danh sách và Tập hợp là giao diện của hệ thống phân cấp tập hợp. Giao diện cơ sở cho các giao diện khác là Bộ sưu tập. Sự khác biệt chính giữa Danh sách và Tập hợp là Danh sách hỗ trợ lưu trữ cùng một phần tử nhiều lần trong khi Tập hợp không hỗ trợ lưu trữ cùng một phần tử nhiều lần. Do đó, một Bộ không cho phép trùng lặp.

Danh sách là gì?

Danh sách là giao diện mở rộng giao diện Bộ sưu tập. Có một số phương thức trong giao diện Bộ sưu tập. Phương thức add giúp thêm một phần tử. ‘Phương thức loại bỏ’ là loại bỏ một phần tử. Có ‘addAll method’ để thêm nhiều phần tử trong khi ‘removeAll method’ để xóa các phần tử khỏi bộ sưu tập. Phương thức chứa giúp tìm xem một đối tượng cụ thể có trong Danh sách hay không. ‘ContainsAll’ là để tìm xem một tập hợp các đối tượng có trong bộ sưu tập hay không. Phương thức vòng lặp được sử dụng để lặp qua các mục của danh sách. Khi Danh sách mở rộng Bộ sưu tập, tất cả các phương thức của Bộ sưu tập đều thuộc về Danh sách. Ngoài các phương thức đó, Danh sách có các phương thức như get và set. Lập trình viên có thể nhận một giá trị tại một chỉ mục cụ thể bằng cách sử dụng phương thức get. Lập trình viên có thể đặt một giá trị tại một chỉ mục cụ thể bằng cách sử dụng phương pháp đặt. ‘IndexOf’ được sử dụng để tìm chỉ mục của một phần tử.

Trong một Danh sách, các thao tác có thể được thực hiện tùy theo vị trí. Người lập trình có thể cung cấp phần tử dữ liệu sẽ được thêm vào chỉ mục. Vì vậy, nó sẽ được thêm vào chỉ mục cụ thể. Nếu người lập trình không đưa ra chỉ mục, phần tử sẽ được thêm vào cuối Danh sách. Nó cũng duy trì thứ tự đã chèn. Nếu phần tử 1 được thêm và sau đó phần tử2 được thêm vào, thì phần tử1 sẽ đứng trước phần tử2.

Sự khác biệt giữa danh sách và tập hợp
Sự khác biệt giữa danh sách và tập hợp

Hình 01: Danh sách và Bộ

ArrayList, LinkedList, Vector là một số lớp thực hiện Danh sách. Trong ArrayList, truy cập một phần tử nhanh nhưng việc chèn và xóa lại thấp hơn. ArrayList không an toàn cho luồng. Việc truy cập cùng một ArrayList từ nhiều luồng có thể không cho kết quả giống nhau. Trong LinkedList, các phần tử được liên kết với cả phía sau và phía trước. Chèn và xóa các phần tử bằng LinkedList nhanh hơn ArrayList. LinkedList triển khai Danh sách và Hàng đợi Cả hai. Vector tương tự như ArrayList, nhưng nó an toàn hơn vì tất cả các phương thức đều được đồng bộ hóa.

Đặt là gì?

Set là giao diện mở rộng giao diện Bộ sưu tập. Khi giao diện Set mở rộng Collection, tất cả các phương thức của Collection cũng thuộc về Set. Một Bộ không hỗ trợ các giá trị trùng lặp. Do đó, người lập trình không thể lưu trữ cùng một phần tử hai lần. Nó duy trì một tập hợp các phần tử duy nhất. Giao diện SortedSet mở rộng giao diện Đặt. SortedSet duy trì các phần tử theo thứ tự đã sắp xếp. Giao diện NavigableSet mở rộng SortedSet. NavigableSet cung cấp các phương pháp điều hướng như thấp hơn, sàn, trần nhà, v.v.

HashSet, LinkedHashSet và TreeSet là một số lớp triển khai giao diện Set. HashSet thực hiện giao diện Set. Nó không duy trì thứ tự đã chèn. Nếu các giá trị được chèn dưới dạng a, x, b, nó có thể lưu trữ dưới dạng, x, a, b. LinkedSet duy trì thứ tự đã chèn. Nếu các phần tử được chèn theo thứ tự a, x, b thì thứ tự lưu trữ sẽ là a, x, b. TreeSet triển khai Set và NavigableSet. Nó không duy trì thứ tự chèn mà lưu trữ các phần tử theo thứ tự đã sắp xếp. Nếu thứ tự được chèn là a, c, b thì các phần tử sẽ được lưu trữ dưới dạng a, b, c. Tất cả HashSet, LinkedHashSet và TreeSet sẽ không có bất kỳ phần tử trùng lặp nào.

Điểm giống nhau giữa danh sách và tập hợp là gì?

  • Cả giao diện Danh sách và Đặt đều mở rộng giao diện Bộ sưu tập.
  • Hỗ trợ cả Danh sách và Đặt các thao tác như thêm, bớt phần tử.

Sự khác biệt giữa Danh sách và Tập hợp là gì?

Danh sách so với Đặt

Giao diện Danh sách là giao diện con của Bộ sưu tập chứa các phương thức để thực hiện các thao tác như chèn, xóa dựa trên chỉ mục. Giao diện Bộ là một giao diện con của Bộ sưu tập chứa các phương thức để thực hiện các thao tác như chèn, xóa các phần tử trong khi vẫn giữ nguyên các phần tử duy nhất.
Lớp học
ArrayList, Vector và LinkedList là các lớp triển khai giao diện Danh sách. HashSet, LinkedHashSet và TreeSet là các lớp triển khai giao diện Set.
Nhân đôi phần tử
Danh sách hỗ trợ sao chép các phần tử. Set không hỗ trợ trùng lặp các phần tử. Các yếu tố là duy nhất.

Tóm tắt - Danh sách so với Tập hợp

Bộ sưu tập được sử dụng để lưu trữ động các phần tử. Các ngôn ngữ lập trình như Java cung cấp giao diện Bộ sưu tập. Danh sách và Đặt là hai giao diện thuộc giao diện Bộ sưu tập. Cả hai giao diện đều mở rộng Bộ sưu tập. Bài viết này đã thảo luận về sự khác biệt giữa Danh sách và Tập hợp. Sự khác biệt chính giữa Danh sách và Tập hợp là Danh sách hỗ trợ lưu trữ cùng một phần tử nhiều lần trong khi Tập hợp không hỗ trợ lưu trữ cùng một phần tử nhiều lần. Set luôn duy trì các yếu tố duy nhất.

Đề xuất: