Sự khác biệt giữa Set và List là gì?


Câu trả lời:


504

Listlà một chuỗi các yếu tố được sắp xếp trong khi đó Setlà một danh sách các yếu tố riêng biệt không có thứ tự (cảm ơn, Quinn Taylor ).

List<E>:

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.

Set<E>:

Một bộ sưu tập không chứa các yếu tố trùng lặp. Chính thức hơn, các tập hợp không chứa cặp phần tử e1 và e2 sao cho e1.equals (e2) và nhiều nhất là một phần tử null. Như ngụ ý của tên của nó, giao diện này mô hình trừu tượng hóa tập hợp toán học.


7
Đối với Sắp xếp, không có hai phần tử trong đó notifyTo () == 0, vì bằng không được gọi.
Peter Lawrey

34
Một bộ CÓ THỂ được đặt hàng, do đó, tuyên bố đầu tiên của câu trả lời này là sai lệch, ngay cả khi tất nhiên là phải chọn Danh sách để thực thi lệnh Bộ sưu tập
Samuel EUSTACHI

24
SAI LẦM! Một bộ Java có thể được đặt hàng, tùy thuộc vào việc thực hiện; ví dụ, Java Plantset được đặt hàng. Trong ngữ cảnh của Java, điểm khác biệt duy nhất giữa Danh sách và Tập hợp là Tập hợp chứa các mục duy nhất. Trong bối cảnh toán học, các mục của một bộ là duy nhất và không có thứ tự.
stackoverflowuser2010

44
Có, một bộ Java CÓ THỂ NHƯNG không được đặt hàng. Có, nếu bạn có một PlantsSet, bạn có thể tin tưởng vào việc được đặt hàng. Nhưng bạn phải BIẾT rằng bạn có một TreeSet chứ không chỉ là Set. Nếu bạn được trả lại một Bộ, bạn không thể phụ thuộc vào đó để được đặt hàng. Mặt khác, một Danh sách được sắp xếp theo đúng bản chất của nó và bất kỳ việc thực hiện Danh sách nào cũng phải được sắp xếp. Vì vậy, về các điều khoản của định nghĩa giao diện, không có gì đặc biệt sai khi nói rằng Bộ không có thứ tự, nhưng có thể đúng hơn một chút về mặt kỹ thuật để nói rằng Bộ không đảm bảo thứ tự phần tử.
Climby Quigman

14
Đừng nhầm lẫn "đã đặt hàng" với "đã sắp xếp." Tương tự như vậy, không giới thiệu hợp đồng của một giao diện và việc triển khai giao diện. Cũng thật sai khi nói rằng một cái gì đó "không có thứ tự" không có thứ tự, điều đó đơn giản có nghĩa là không có gì đảm bảo về việc thực hiện lệnh (và thứ tự có thể không ổn định giữa các cuộc gọi, không giống như danh sách được đặt hàng).
lilbyrdie

223
╔═══════════════════╦══════════════════════╦═════════════════════════════╗
                            List                     Set              
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
     Duplicates              YES                     NO               
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
       Order              ORDERED          DEPENDS ON IMPLEMENTATION  
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
 Positional Access          YES                      NO                
╚═══════════════════╩══════════════════════╩═════════════════════════════╝

2
Một điều cần lưu ý: hiệu suất truy cập theo vị trí phụ thuộc rất nhiều vào việc triển khai cơ bản, mảng so với danh sách được liên kết stackoverflow.com/questions/322715/iêu
Barshe Roussy

1
Làm thế nào để Bộ được lập chỉ mục nếu không bằng cách truy cập vị trí? (+1 cho bảng ASCII)
áp dụng

72

Danh sách các phần tử được sắp xếp theo thứ tự (duy nhất hoặc không)
Phù hợp với giao diện của Java có tênList
Có thể được truy cập theo chỉ mục

sử dụng

  • Danh sách liên kết
  • Lập danh sách

Danh sách các yếu tố độc đáo:
Phù hợp với giao diện của Java được đặt tênSet
có thể không được truy cập bởi chỉ số

sử dụng

  • Hashset (không có thứ tự)
  • LinkedHashset (đã đặt hàng)
  • TreeSet (được sắp xếp theo thứ tự tự nhiên hoặc bằng bộ so sánh được cung cấp)

Cả hai giao diện SetListphù hợp với giao diện của Java có tênCollection


28

Tập hợp không thể chứa các phần tử trùng lặp trong khi Danh sách có thể. Danh sách (trong Java) cũng bao hàm thứ tự.


16
  • Danh sách là một nhóm các mục
  • Tập hợp là một nhóm các mục không có thứ tự mà không cho phép trùng lặp (thường)

Về mặt khái niệm, chúng ta thường đề cập đến một nhóm không có thứ tự cho phép sao chép dưới dạng Túi và không cho phép trùng lặp là Tập hợp.


Một tập hợp không thể có trùng lặp.
karim79

Một số cài đặt đã được đặt hàng (chẳng hạn như LinkedHashset, duy trì một LinkedList đằng sau hậu trường). Nhưng Set ADT không có thứ tự.
Michael Myers

10

Danh sách

  1. Là một nhóm thứ tự các yếu tố.
  2. Danh sách được sử dụng để thu thập các yếu tố với các bản sao.
  3. Các phương thức mới được định nghĩa bên trong giao diện List.

Bộ

  1. Là một nhóm các yếu tố không sắp xếp.
  2. Set được sử dụng để thu thập các phần tử mà không trùng lặp.
  3. Không có phương thức mới nào được định nghĩa bên trong Giao diện cài đặt, vì vậy chúng tôi phải sử dụng các phương thức giao diện Bộ sưu tập chỉ với Đặt lớp con.

10

Danh sách:

Lists thường cho phép các đối tượng trùng lặp. Lists phải được đặt hàng, và do đó có thể truy cập bằng chỉ mục.

Lớp thực hiện bao gồm: ArrayList, LinkedList,Vector

Bộ:

Sets không cho phép các đối tượng trùng lặp. Hầu hết các triển khai là không có thứ tự, nhưng nó là thực hiện cụ thể.

Các lớp thực hiện bao gồm: HashSet(không có thứ tự), LinkedHashSet(được đặt hàng), TreeSet(được sắp xếp theo thứ tự tự nhiên hoặc bằng bộ so sánh được cung cấp)


7

Như chúng ta đang nói về các giao diện Java, tại sao không nhìn vào Javadoc?!

  • A Listlà một bộ sưu tập theo thứ tự (trình tự), thường cho phép trùng lặp
  • Một Settập hợp là không chứa các phần tử trùng lặp, thứ tự lặp có thể được đảm bảo khi thực hiện

KHÔNG có đề cập nào về việc thiếu thứ tự liên quan đến Bộ: nó phụ thuộc vào việc thực hiện.


2
Chính xác. LinkedHashSet chứa các thành phần theo thứ tự chèn.
ggb667

Đó là một giao diện, MỌI THỨ phụ thuộc vào việc thực hiện. List.get () có thể tạo một tệp chứa 5 số thập phân đầu tiên của pi và ném StackOverFlowException trong một số triển khai, điều này không có nghĩa là bạn có thể nói "Danh sách là thứ có thể tạo tệp", vì đó không phải là một phần của hợp đồng được xác định bởi giao diện. Yêu cầu tài liệu Set được mô hình hóa theo khái niệm toán học của một tập hợp, theo định nghĩa là không theo thứ tự. Đưa ra một bộ trong mã của bạn, bạn không thể cho rằng nó được đặt hàng mà không vi phạm các nguyên tắc RẮN.
sara

@kai, tôi thường giữ LinkedHashSetbên trái nếu mã dựa vào thứ tự sau này. Tôi chỉ sử dụng Setnếu tôi thực sự sử dụng nó như một, vì bạn không thể cho rằng việc triển khai cơ bản là một LinkedHashSethoặc như vậy, nó có thể là ngày hôm nay, nhưng ngày mai mã thay đổi và nó sẽ thất bại.
Barshe Roussy

Nếu bạn khai báo LinkedHashset, bạn không xử lý Tập hợp, do đó, việc đưa ra tuyên bố về cách các Bộ nên hành xử hầu như không liên quan. Tôi muốn nói rằng việc quy định (có thể) cho các tập hợp dựa trên một số triển khai cũng giống như nói "Các trường hợp của Runnable có một phương thức chạy có nghĩa là chạy trên một số luồng. Ngoài ra, chúng mở kết nối DB và đọc dữ liệu khách hàng tùy theo việc triển khai. " Tất nhiên một số triển khai có thể làm điều đó, nhưng đó không phải là những gì được ngụ ý bởi Giao diện Runnable.
sara

5

Đây có thể không phải là câu trả lời mà bạn đang tìm kiếm, nhưng JavaDoc của các lớp bộ sưu tập thực sự khá mô tả. Sao chép / dán:

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.


5

Một tập hợp là một nhóm các đối tượng riêng biệt không có thứ tự - không cho phép các đối tượng trùng lặp. Nó thường được thực hiện bằng cách sử dụng mã băm của các đối tượng được chèn. (Việc triển khai cụ thể có thể thêm thứ tự, nhưng bản thân giao diện Set thì không.)

Một danh sách là một nhóm các đối tượng được sắp xếp có thể chứa các bản sao. Nó có thể được thực hiện với một ArrayList, LinkedListvv


1
Tôi bối rối 😕! Không có thứ tự / không có thứ tự có nghĩa là gì trong bối cảnh này? Có liên quan đến thứ tự tăng dần và thứ tự giảm dần? Nếu vậy, Listkhông được ra lệnh
malhobayyeb

4
Sắp xếp theo thứ tự là khi dữ liệu đầu vào được sắp xếp chính xác như được nhập bởi người dùng trong khi Sắp xếp là khi dữ liệu đầu vào được sắp xếp theo thứ tự từ vựng hoặc tăng dần / giảm dần (theo giá trị số nguyên). Không sắp xếp có nghĩa là dữ liệu đầu vào có thể hoặc không thể được lưu trữ theo thứ tự nhập vào của người dùng.
Akhil

5

Danh sách:
Danh sách cho phép các yếu tố trùng lặp và giá trị null. Dễ dàng tìm kiếm bằng cách sử dụng chỉ mục tương ứng của các phần tử và nó cũng sẽ hiển thị các phần tử theo thứ tự chèn. Ví dụ: (danh sách liên kết)

import java.util.*;

public class ListExample {

 public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Integer> l=new LinkedList<Integer>();
    l.add(001);
    l.add(555);
    l.add(333);
    l.add(888);
    l.add(555);
    l.add(null);
    l.add(null);

    Iterator<Integer> il=l.iterator();

    System.out.println(l.get(0));

    while(il.hasNext()){
        System.out.println(il.next());
    }

    for(Integer str : l){
        System.out.println("Value:"+str);
    }
 }

}

Đầu ra:

1
1
555
333
888
555
null
null
Giá trị: 1
Giá trị: 555
Giá trị: 333
Giá trị: 888
Giá trị: 555
Giá trị: null
Giá trị: null

Đặt:
Đặt không cho phép bất kỳ phần tử trùng lặp nào và nó cho phép một giá trị null duy nhất. Nó sẽ không duy trì bất kỳ thứ tự nào để hiển thị các phần tử. ChỉTreeSet sẽ hiển thị theo thứ tự tăng dần.

Ví dụ: (Treeset)

import java.util.TreeSet;

public class SetExample {

 public static void main(String[] args) {
    // TODO Auto-generated method stub

    TreeSet<String> set = new TreeSet<String>();
    try {
        set.add("hello");
        set.add("world");
        set.add("welcome");
        set.add("all");

        for (String num : set) {
            System.out.println( num);

        }
        set.add(null);
    } catch (NullPointerException e) {
        System.out.println(e);
        System.out.println("Set doesn't allow null value and duplicate value");
    }

 }

}

Đầu ra:

tất cả
xin
chào
thế giới chào mừng
java.lang.NullPulumException
Set không cho phép giá trị null và giá trị trùng lặp


3

1.List cho phép các giá trị trùng lặp và thiết lập không cho phép trùng lặp

2.List duy trì thứ tự mà bạn chèn các phần tử vào danh sách Đặt không duy trì thứ tự. 3.List là một chuỗi các phần tử được sắp xếp trong khi Set là một danh sách các phần tử riêng biệt không có thứ tự.


3

Danh sách Vs Set

1) Đặt không cho phép trùng lặp. Danh sách cho phép trùng lặp. Dựa trên việc triển khai Set, Nó cũng duy trì thứ tự chèn.

ví dụ : LinkedHashSet. Nó duy trì thứ tự chèn. Vui lòng tham khảo bấm vào đây

2) chứa phương thức. Theo bản chất của Set, nó sẽ cung cấp hiệu suất tốt hơn để truy cập. Trường hợp tốt nhất của nó o (1). Nhưng Danh sách có vấn đề hiệu suất để gọi contains.


2

Tất cả các Listlớp duy trì thứ tự chèn. Họ sử dụng các triển khai khác nhau dựa trên hiệu suất và các đặc điểm khác (ví dụ: ArrayListtốc độ truy cập của một chỉ mục cụ thể,LinkedList chỉ đơn giản là duy trì trật tự). Vì không có chìa khóa, các bản sao được cho phép.

Các Setlớp không duy trì thứ tự chèn. Họ có thể tùy ý áp đặt một thứ tự cụ thể (như với SortedSet), nhưng thường có một thứ tự được xác định theo thực hiện dựa trên một số hàm băm (như với HashSet). Vì Sets được truy cập bằng khóa, trùng lặp không được phép.


Bản đồ lưu trữ các đối tượng theo khóa, nhưng đặt các đối tượng lưu trữ bằng cách sử dụng một giá trị duy nhất liên quan đến đối tượng, thường là mã băm của nó. (Bản đồ cũng có thể sử dụng mã băm để kiểm tra tính duy nhất của khóa, nhưng chúng không bắt buộc.)
Quinn Taylor

1

Đặt hàng ... một danh sách có một đơn đặt hàng, một bộ không.


2
Set ADT không chỉ định thứ tự, nhưng một số cài đặt Set (chẳng hạn như LinkedHashset) giữ thứ tự chèn.
Michael Myers

3
Tuy nhiên, sự khác biệt quan trọng hơn là các bộ không cho phép trùng lặp. Một túi / multiset nào.
Quinn Taylor

Một TreeSet đã đặt hàng.
stackoverflowuser2010

1

Một số lưu ý khác biệt xứng đáng giữa Danh sách và Tập hợp trong Java được đưa ra như sau:

1) Sự khác biệt cơ bản giữa Danh sách và Tập hợp trong Java là cho phép các phần tử trùng lặp. Danh sách trong Java cho phép trùng lặp trong khi Set không cho phép bất kỳ sự trùng lặp nào. Nếu bạn chèn trùng lặp trong Set, nó sẽ thay thế giá trị cũ hơn. Mọi triển khai Set trong Java sẽ chỉ chứa các phần tử duy nhất.

2) Một sự khác biệt đáng kể khác giữa Danh sách và Bộ trong Java là thứ tự. Danh sách là Bộ sưu tập có thứ tự trong khi Bộ là Bộ sưu tập không có thứ tự. Danh sách duy trì thứ tự chèn của các phần tử, có nghĩa là bất kỳ phần tử nào được chèn trước sẽ có chỉ số thấp hơn bất kỳ phần tử nào được chèn sau. Đặt trong Java không duy trì bất kỳ trật tự nào. Mặc dù Set cung cấp một lựa chọn khác có tên là Sortedset có thể lưu trữ các phần tử theo thứ tự Sắp xếp cụ thể được xác định bởi các phương thức So sánh và So sánh của các Đối tượng được lưu trữ trong Set.

3) Việc triển khai phổ biến giao diện Danh sách trong Java bao gồm ArrayList, Vector và LinkedList. Mặc dù triển khai phổ biến của giao diện Set bao gồm Hashset, TreeSet và LinkedHashset.

Rõ ràng là nếu bạn cần duy trì thứ tự chèn hoặc đối tượng và bộ sưu tập của bạn có thể chứa các bản sao thì Danh sách là một cách để đi. Mặt khác, nếu yêu cầu của bạn là duy trì bộ sưu tập duy nhất mà không có bất kỳ sự trùng lặp nào thì Set là cách để đi.


Xin chào @Vibha, Nếu tôi mất cả hai điều kiện? Tôi có nghĩa là tôi không muốn dữ liệu của mình chứa các bản sao và tôi cũng muốn nó được sắp xếp theo thứ tự.
Panadol Chong

1

Danh sách:

  1. Cho phép trùng lặp.
  2. Sắp xếp theo thứ tự các yếu tố nhóm. (Nói cách khác là có thứ tự xác định. Không cần phải sắp xếp theo thứ tự tăng dần)

Bộ:

  1. Không được phép trùng lặp.
  2. Không có thứ tự trong các nhóm yếu tố. (Nói cách khác là không có thứ tự xác định. Nó có thể hoặc không thể sắp xếp theo thứ tự tăng dần)

0

Set<E>List<E>cả hai đều được sử dụng để lưu trữ các yếu tố của loại E. Sự khác biệt là Setđược lưu trữ theo cách không có thứ tự và không cho phép các giá trị trùng lặp. Listđược sử dụng để lưu trữ các phần tử theo cách có thứ tự và nó cho phép các giá trị trùng lặp.

Setcác phần tử không thể được truy cập bởi một vị trí chỉ mục và Listcác phần tử có thể được truy cập bằng một vị trí chỉ mục.


1
@BalusC xin vui lòng không bình luận khi xem ngày đăng. Xem bài xứng đáng tại thời điểm đó.
Yash

0

Xin chào, rất nhiều câu trả lời đã được đưa ra..Hãy cho tôi chỉ ra một số điểm chưa được đề cập cho đến nay:

  • Hầu hết các triển khai Danh sách (ArrayList, Vector) thực hiệnRandomAccess giao diện mà là một giao diện đánh dấu để truy cập nhanh hơn. Không có triển khai Set nào làm điều đó.
  • Danh sách sử dụng một Iterator đặc biệt được gọi là ListIterator hỗ trợ lặp theo cả hai hướng . Set sử dụng Iterator chỉ hỗ trợ lặp 1 chiều
  • Hashset chiếm bộ nhớ gấp 5,5 lần so với ArrayList để lưu trữ cùng một số phần tử.

@smurti điều này hơi muộn và không chắc bạn có lưu ý hay không, nhưng điểm đầu tiên của bạn mâu thuẫn với chính nó: "Hầu hết các triển khai Danh sách (ArrayList, Vector) đều triển khai RandomAccess ..." và "... Không có Danh sách nào triển khai thực hiện điều đó "
Peter M

0

Sự khác biệt lớn nhất là khái niệm cơ bản.

Từ giao diện SetList . Đặt là khái niệm toán học. Đặt phương thức mở rộng bộ sưu tập. Dù sao không thêm phương thức mới. size () có nghĩa là cardinality (nhiều hơn là BitSet.cardinality, bộ đếm tuyến tính Log Nhật ký nhật ký , HyperLogLog ). add ALL () có nghĩa là hợp nhất. giữ lại All () có nghĩa là giao điểm. remove ALL () có nghĩa là sự khác biệt.

Tuy nhiên Danh sách thiếu các khái niệm này. Danh sách thêm rất nhiều phương thức để hỗ trợ khái niệm chuỗi mà giao diện Collection không cung cấp. khái niệm cốt lõi là INDEX . như add (index, phần tử), get (index), search (indexOf ()), remove (index) phần tử. Danh sách cũng cung cấp " Bộ sưu tập Xem " sublist . Đặt không có chế độ xem. không có quyền truy cập vị trí. Danh sách cũng cung cấp rất nhiều thuật toán trong lớp Bộ sưu tập . sắp xếp (Danh sách), binarySearch (Danh sách), đảo ngược (Danh sách), xáo trộn (Danh sách), điền (Danh sách). tham số phương thức là giao diện List . các yếu tố trùng lặp chỉ là kết quả của các khái niệm. không phải là sự khác biệt thiết yếu

Vì vậy, sự khác biệt cần thiết là khái niệm. Set là khái niệm toán học. Danh sách là khái niệm trình tự.


-1

Đây là một ví dụ rõ ràng với Groovy. tôi tạo một bộ và một danh sách. sau đó tôi cố gắng lưu trữ 20 giá trị được tạo ngẫu nhiên trong mỗi danh sách. giá trị được tạo có thể nằm trong phạm vi từ 0 đến 5

s = [] as Set
l = []

max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}


println "\n"
println "Set : $s "
println "list : $l

Kết quả :

Số ngẫu nhiên: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

Bộ : [4, 1, 0, 2, 3]

danh sách : [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]

Bạn có thể thấy rằng sự khác biệt là:

  • Đặt không cho phép các giá trị trùng lặp.
  • Danh sách cho phép các giá trị trùng lặp.

1
Danh sách cũng duy trì trật tự.
glen3b

-1

Giống như câu trả lời vì SET không có giá trị trùng lặp và Danh sách có thể. Tất nhiên, trật tự là một thứ khác để phân biệt chúng.


-1

Set: Một Set không thể có các phần tử trùng lặp trong các bộ sưu tập của nó. nó cũng là một bộ sưu tập không có thứ tự Để truy cập dữ liệu từ Set, chỉ cần sử dụng Iterator và truy xuất dựa trên chỉ mục là không thể đối với nó. Nó chủ yếu được sử dụng bất cứ khi nào yêu cầu bộ sưu tập duy nhất.

Danh sách: Danh sách có thể có các thành phần trùng lặp, với thứ tự tự nhiên khi nó được chèn. Vì vậy, nó có thể được lấy dữ liệu dựa trên chỉ mục hoặc iterator. Nó được sử dụng rộng rãi để lưu trữ bộ sưu tập cần truy cập dựa trên chỉ mục.


-2

Tên chủ đề: Danh sách VS Set

Tôi vừa trải qua chủ đề quan trọng nhất của Java có tên là Bộ sưu tập Khung. Tôi nghĩ để chia sẻ kiến ​​thức nhỏ của tôi về Bộ sưu tập với bạn. Danh sách, bộ, bản đồ là chủ đề quan trọng nhất của nó. Vì vậy, hãy bắt đầu với Danh sách và Bộ.

Sự khác biệt giữa Danh sách và Bộ:

  1. Danh sách là lớp tập hợp mở rộng AbstractListlớp trong đó Set là lớp tập hợp mở rộng AbstractSetlớp nhưng cả hai đều thực hiện giao diện Bộ sưu tập.

  2. Giao diện danh sách cho phép các giá trị trùng lặp (phần tử) trong khi Giao diện cài đặt không cho phép các giá trị trùng lặp. Trong trường hợp các phần tử trùng lặp trong Set, nó sẽ thay thế các giá trị cũ hơn.

  3. Giao diện danh sách cho phép các giá trị NULL trong đó giao diện Set không cho phép các giá trị Null. Trong trường hợp sử dụng các giá trị Null trong Set, nó mang lạiNullPointerException .

  4. Giao diện danh sách duy trì thứ tự chèn. Điều đó có nghĩa là cách chúng ta thêm các phần tử trong Danh sách giống như cách chúng ta có được nó bằng cách sử dụng iterator hoặc cho mỗi kiểu. Trong khi đó Setviệc thực hiện không nhất thiết phải duy trì trật tự chèn. (Mặc dù SortedSetkhông sử dụngTreeSetLinkedHashSetduy trì thứ tự chèn).

  5. Giao diện danh sách có các phương thức riêng được xác định trong khi giao diện Set không có phương thức riêng nên Set chỉ sử dụng các phương thức giao diện Collection.

  6. Giao diện danh sách có một lớp kế thừa được gọi là Vector trong khi Giao diện cài đặt không có bất kỳ lớp kế thừa nào

  7. Cuối cùng nhưng không kém phần quan trọng ... listIterator()Phương thức chỉ có thể được sử dụng để xoay vòng các phần tử trong Lớp Danh sách trong khi chúng ta có thể sử dụng phương thức iterator () để truy cập Đặt các phần tử lớp

Bất cứ điều gì khác chúng ta có thể thêm? Làm ơn cho tôi biết.

Cảm ơn.


Đối với một, ListSetlà các giao diện cũng có các triển khai "cơ sở" dưới dạng một lớp trừu tượng (mà bạn đã đề cập). Ngoài ra, # 3 hoàn toàn không chính xác , vì hầu hết các bộ cho phép giá trị null (nhưng phụ thuộc vào việc triển khai). Tôi không hiểu # 5 và # 7, và # 6 Vectorkhông phải là di sản, nhưng chỉ được đồng bộ hóa và không được ưa thích để sử dụng trừ khi cần đồng bộ hóa.
glen3b

-3

Bộ:

Không thể có các giá trị trùng lặp Đặt hàng phụ thuộc vào việc thực hiện. Theo mặc định, nó không được ra lệnh Không thể truy cập theo chỉ mục

Danh sách:

Có thể có các giá trị trùng lặp Được sắp xếp theo mặc định Có thể có quyền truy cập theo chỉ mục

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.