Sự khác biệt giữa Set và List Sự Khác biệt giữa

Anonim

Sự khác nhau giữa Array List và Linked List

Trước khi chúng ta nhận ra sự khác biệt thực sự, hãy để chúng ta biết chính xác những gì?

Bộ là gì?

Chúng ta đã đi qua khái niệm Set trong toán học và Set ở đây nhiều hay ít có nghĩa là giống nhau. Vâng, đó là một tập hợp các phần tử và trong hầu hết các trường hợp, một tập hợp các yếu tố tương tự. Bạn có thể thử thêm các phần tử này vào Tập và thử in để hiểu, nó thực sự được lưu trữ như thế nào.

-9->

Đầu vào cho một bộ: 20, 50, 10, 30.

Nó thực sự được cất giữ trong bộ như 10, 20, 30, 50.

Các phần tử được sắp xếp ở đây và được lưu trữ không theo thứ tự chèn của chúng. Đây là một trong những tính năng của Bộ mà nó luôn luôn sắp xếp các yếu tố trước khi lưu trữ và tất nhiên, có những ngoại lệ và nó là LinkedhashSet vì nó duy trì trình tự chèn của các phần tử.

Về mặt máy tính, Set bao gồm một số thuộc tính bổ sung như Methods and Inheritance. Phương pháp cũng giống như các hàm và chúng thực hiện một số nhiệm vụ như bổ sung, loại bỏ hoặc lặp lại thông qua các tập hợp các phần tử. Hầu hết chúng ta đều nổi tiếng về thuật ngữ Thừa kế và nó cũng có ý nghĩa như nhau ở đây. Vâng, chúng ta có thể kế thừa một Phương thức từ Bộ sưu tập của nó, để nó có thể được sử dụng với Giao diện Đặt. Một lần nữa chúng ta đang nói về một thuật ngữ mới i. e. giao diện thiết lập, và nó không có gì nhiều hơn toàn bộ các yếu tố bao gồm các phương pháp.

Làm thế nào để thực hiện nó?

Chỉ cần cho một sự hiểu biết tốt hơn, chúng tôi đã đại diện cho một Bộ với cú pháp của nó. Từ cú pháp dưới đây, bạn có thể xác định các loại khác nhau của bộ như HashSet và TreeSet.

nhập khẩu java. util. *;

public class Setexample {

public static void main (String args []) {

int count [] = {34, 22, 10, 60, 30, 22} {25, 17, 76, 12, 88, 57};

Set set = new HashSet ();

thử {

cho (int i = 0; i <5; i ++) {

đặt. thêm (đếm [i]);

}

Hệ thống. ngoài. println (bộ);

TreeSet sortedSeteg = new TreeSet (đặt);

Hệ thống. ngoài. println ("Ở đây chúng ta có đầu ra được sắp xếp:");

Hệ thống. ngoài. println (sắp xếpSeteg);

Hệ thống. ngoài. println ("Hãy xem phần tử đầu tiên:" + (Số nguyên) được sắp xếpSet ());

Hệ thống. ngoài. println ("Hãy xem phần tử cuối cùng:" + (Số nguyên) được sắp xếpSet last ());

}

catch (Exception e) {}

}

}

Kết quả của đoạn mã trên là như sau.

Ở đây chúng tôi có đầu ra đã được sắp xếp:

[12, 17, 25, 76, 88]

Nhìn vào phần tử đầu tiên: 12 > Nhìn nguyên tố cuối cùng: 88

List là gì?

Danh sách mở rộng Bộ sưu tập tương tự như cách Set đã làm, nhưng nó duy trì thứ tự chèn. Bạn thử thêm các tên sau vào một danh sách và xem cách được thêm vào nó.

Đầu vào cho một danh sách:

John, Nancy, Mary, Alice.

Làm thế nào nó được lưu giữ trong một danh sách: John, Nancy, Mary, Alice.

Chỉ cần chú ý thứ tự mà chúng được chèn. Bạn có thể xác định rằng 'John' là phần tử đầu tiên trong đầu vào cũng như đầu ra và được theo sau bởi cùng thứ tự trong đó các tên được chèn vào. Chúng ta thậm chí có thể xem xét một trong những tính chất chính của Danh sách. Làm thế nào để thực hiện nó?

Chúng ta hãy nhìn vào vài trong số các phương thức của List như ArrayList và LinkedList theo cú pháp dưới đây.

nhập khẩu java. util. *;

public Collections lớp mẫu {

public static void main (String [] args) {

Danh sách a1 = new ArrayList ();

a1. thêm ("John");

a1. thêm ("Nancy");

a1. thêm ("Mary");

a1. thêm ("Alice");

Hệ thống. ngoài. println ("ArrayList Elements là");

Hệ thống. ngoài. in (" t" + a1);

Danh sách l1 = new LinkedList ();

l1. thêm ("Silvia");

l1. thêm ("Arjun");

l1. thêm ("Deepika");

l1. thêm ("Susan");

Hệ thống. ngoài. println ();

Hệ thống. ngoài. println ("Các Thành phần Liên kết được");

Hệ thống. ngoài. in (" t" + l1); }}

Kết quả của cú pháp ở trên là như sau.

Các phần tử ArrayList

Các thành phần liên kết

[Silvia, Arjun, Deepika, Susan]

Rõ ràng là từ mã trên cả ArrayList và LinkedList duy trì trình tự chèn.

Chúng khác nhau như thế nào?

Các phương pháp và mô tả:

Tập hợp và danh sách có các phương pháp của riêng mình và chúng ta hãy nhìn vào vài trong số chúng ở đây.

S. Không

  • Set - Phương pháp

Danh sách - Phương pháp

1. add () - Đó là thêm các đối tượng vào bộ sưu tập.
void add (chỉ mục int, Object obj) - Nó thêm đối tượng 'obj' tại chỉ mục 'chỉ mục' của danh sách gọi ra và đảm bảo rằng không có phần tử nào bị ghi đè bằng cách chuyển các phần tử trước đó. 2. clear () - Nó là để loại bỏ các đối tượng từ một bộ sưu tập.
boolean addAll (int index, Collection c) - Nó thêm toàn bộ bộ sưu tập 'c' vào danh sách gọi và chỉ ra 'chỉ mục'. Nó cũng đảm bảo rằng không có phần tử nào bị ghi đè. Chúng tôi cũng có thể kiểm tra tính chính xác của hoạt động của nó bằng cách kiểm tra giá trị trả lại. Nó trả về 'true' nếu thay đổi thành công nếu không, nó trả về một giá trị 'false'. 3. chứa () - Để kiểm tra xem Tập hợp có chứa một đối tượng nhất định trong đó. Nó trả về một giá trị 'true' nếu đối tượng có trong Set.
Đối tượng nhận được (int index) - Nó trả về phần tử hoặc đối tượng tại chỉ mục 'chỉ mục'. 4. isEmpty () - Để xác định bộ sưu tập có trợ giúp không như các phần tử trong đó. Nó trả về một giá trị 'true' nếu không có phần tử.
int lastIndexOf (Object obj) - Nó hoạt động tương tự như đảo ngược của indexOf () Phương pháp. Nó trả về sự xuất hiện cuối cùng của đối tượng được chỉ định 'obj' và một giá trị '1' được trả về nếu không có đối tượng nào trong danh sách. Vì vậy, nó cũng có thể được sử dụng như là có () Phương pháp của giao diện Set. 6. remove () - Nó là để loại bỏ một phần tử từ bộ sưu tập bằng cách chỉ định nó như một tham số cho phương thức.
ListIterator listIterator () - Nó trả về một Iterator tới chỉ mục khởi đầu của List. 7. size () - Nó đếm số vật hoặc các phần tử mà bộ sưu tập có.
ListIterator listIterator (int index) - Nó giúp trong việc lặp lại thông qua danh sách Invoking bắt đầu từ chỉ mục 'index'. 8. - Đối tượng loại bỏ (int index) -
Nó xóa đối tượng tại chỉ mục 'chỉ mục' và trả về phần tử đã xoá như kết quả. Nó cũng giảm các chỉ số danh sách kết quả để phản ánh việc xóa. 9. - Đối tượng thiết lập (chỉ mục int, Object obj) -
Nó chỉ định đối tượng 'obj' vào danh sách gọi ở chỉ mục 'chỉ mục'. 10. - Danh sách phụ (int start, int end) -
Nó bao gồm các đối tượng từ chỉ mục 'bắt đầu' đến 'kết thúc' trong danh sách đã gọi phương thức. Bảo trì đơn đặt hàng chèn: Bộ không bao giờ duy trì thứ tự của các phần tử trong đó chúng được chèn vào trong khi đó Danh sách vẫn duy trì nó. Có một ngoại lệ cho quy tắc này cho LinkedHashSet vì nó duy trì thứ tự chèn nhưng các Bộ khác như HashSet và TreeSet sắp xếp các phần tử trước khi lưu trữ. Tương tự như vậy được mô tả với các ví dụ dưới đây. Đặt
  • Đầu vào: Cát, Búp bê, Apple.

Lưu trữ dưới dạng: Apple, Cat, Doll.

Danh sách đầu vào: Cát, Búp bê, Apple.

Lưu trữ trong: Cat, Doll, Apple.

Sự có mặt của Duplicates:

Một bộ không bao giờ cho phép sao chép trong khi một Danh sách cho phép nó. Nếu giá trị trùng lặp phải được thêm vào một danh sách thì nó sẽ bị ghi đè. Xem các mẫu cho Set và List duplicates.

Đặt đầu vào: 10, 20, 20, 50.

  • Lưu trữ: 10, 20, 50.

Danh sách đầu vào: 10, 20, 20, 50.

Lưu trữ dưới dạng: 10, 20, 20, 50.

Giá trị Null:

Một bộ có thể chỉ có một giá trị null trong khi một List có thể có nhiều hơn một giá trị null và không giới hạn ở bất kỳ số nào.

Đặt đầu vào: null, null, Man, Dog, Plane.

  • Lưu trữ dưới dạng: null, Dog, Man, Plane.

Danh sách đầu vào: null, null, Man, Dog, Plane.

Lưu trữ dưới dạng: null, null, Man, Dog, Plane.

Sử dụng Iterator & ListIterator:

Phương thức Iterator hoạt động tốt với cả Set và List trong khi ListIterator phương pháp chỉ hoạt động với List. ListIterator có thể được sử dụng để đi qua cũng như ngược lại thông qua Danh sách.

Sự hiện diện của lớp Legacy:

  • Tập không có lớp thừa kế trong khi giao diện List có một di sản gọi là 'vector'. Một vector sử dụng giao diện List và do đó nó duy trì thứ tự chèn. Do những nỗ lực đồng bộ hoá, hiệu suất của vector trong việc bổ sung, xóa và cập nhật chậm hơn một chút.

Triển khai:

  • Rất ít trong số các cài đặt hiện tại là HashSet, LinkedHashSet và TreeSet. Rất ít sự triển khai của List bao gồm ArrayList và LinkedList.

Khi nào sử dụng Set & List?

  • Việc sử dụng Thiết lập và Danh sách hoàn toàn phụ thuộc vào yêu cầu duy trì trật tự chèn.Như chúng ta đã biết rằng một bộ không bao giờ duy trì thứ tự chèn, nó có thể được sử dụng khi thứ tự có ít quan trọng hơn. Tương tự, sử dụng Danh sách khi bạn cần duy trì trình tự chèn.

Sự khác nhau trong một dạng bảng:

S. Không

Sự khác biệt trong

Đặt

Danh sách 1. Đơn đặt hàng Nó duy trì trình tự chèn. Chèn vào đầu tiên vẫn còn ở vị trí đầu tiên và như vậy không phân biệt giá trị của nó.
Nó không bao giờ duy trì thứ tự chèn. 2. Phương pháp Nó sử dụng các phương pháp như add (), clear (), contains (), isEmpty (), remove () và size ().
Nó sử dụng các phương pháp như add (), addAll (), get (), lastIndexOf (), ListIterator () có hoặc không có tham số, remove (), set () và subList (). 3. Trùng lặp Nó không bao giờ cho phép các bản sao và trong trường hợp xuất hiện như vậy, giá trị sẽ bị ghi đè.
Cho phép bản sao. 4. Giá trị Null Chỉ có thể có một giá trị null ở mức tối đa.
Nó có thể có bất kỳ số lượng các giá trị null. 5. Sử dụng Iterator () & listIterator () Nó chỉ sử dụng phương thức iterator ().
Nó sử dụng cả iterator () cũng như listIterator (). 6. Sự có mặt của lớp kế thừa Không có lớp Legacy.
Nó có lớp Legacy được gọi là vector. 7. Triển khai Rất ít cài đặt giao diện Set là HashSet, LinkedHashSet và Tree Set.
Rất ít trong số các cài đặt Giao diện Danh sách là LinkedList và ArrayList. Hy vọng, chúng tôi đã bao gồm mọi sự khác biệt có thể có giữa Set và List. Nếu bạn cảm thấy rằng chúng tôi đã bỏ lỡ một cái gì đó, xin vui lòng cho chúng tôi biết.