Sự khác biệt giữa một bộ sưu tập được sắp xếp và sắp xếp là gì?


132

Có sự khác biệt giữa một sắp xếpra lệnh cho bộ sưu tập?


1
Đừng có câu trả lời ở đây quá theo nghĩa đen. Mặc dù đó là loại định nghĩa được hiểu và thừa nhận rộng rãi, nhưng nó không phải là định nghĩa thực tế trong thuật ngữ máy tính. Ví dụ, trong .NET, giao diện cho liệt kê "được sắp xếp" được gọi IOrderedEnumerable (điều buồn cười là nó không nhất quán trong .NET. Từ điển tôn trọng "thứ tự chèn" trong .NET được gọi OrderedDictionarymà một số người tin là một cách gọi sai so với nói, IndexedDictionary) . Vâng trong thế giới java (hầu hết ở nơi khác cũng vậy) họ có nghĩa là những gì bạn đã có trong câu trả lời. Để biết thêm xem tại đây .
nawfal

Nếu một số trường hợp thực hiện bị đặt tên sai, đó không phải là lý do để tuyên truyền lỗi của nó. Đó là một câu hỏi hay, với câu trả lời hay. Sử dụng cách đặt tên phù hợp - giúp giảm sự nhầm lẫn cho mọi người, bao gồm cả chính bạn.
foo

Câu trả lời:


166

Một bộ sưu tập có nghĩa là các yếu tố của bộ sưu tập có một thứ tự cụ thể. Thứ tự độc lập với giá trị. Một Danh sách là một ví dụ.

Một bộ sưu tập được sắp xếp có nghĩa là không chỉ bộ sưu tập có thứ tự, mà thứ tự phụ thuộc vào giá trị của phần tử. Một Sắp xếp là một ví dụ.

Ngược lại, một bộ sưu tập không có bất kỳ thứ tự nào có thể duy trì các yếu tố theo bất kỳ thứ tự nào. Một tập hợp là một ví dụ.


1
Là ưu tiên hàng đợi một bộ sưu tập đặt hàng?
trao đổi quá mức

@overexchange Với các định nghĩa trên, hàng đợi ưu tiên sẽ là một bộ sưu tập được sắp xếp trong hầu hết các trường hợp, vì mức độ ưu tiên hầu như luôn được xác định là thuộc tính của các thành phần trong hàng đợi.
cdeszaq

Nếu Sortedset được kế thừa từ Set và đang có mối quan hệ tương tác với nó thì làm sao bạn có thể nói Set là không có thứ tự nào
xpione

79

Một bộ sưu tập có thứ tự duy trì thứ tự của các yếu tố dựa trên trình tự bạn đặt công cụ vào / xóa chúng khỏi bộ sưu tập.

Một bộ sưu tập được sắp xếp giữ các yếu tố được sắp xếp dựa trên một tiêu chí sắp xếp.


18

Java sử dụng "bộ sưu tập theo thứ tự" để có nghĩa là một bộ sưu tập, chẳng hạn như Danh sách, trong đó (không giống như Hashset), bộ sưu tập ghi nhớ thứ tự các phần tử được cho là theo thứ tự nào. Vì vậy, các phần tử có thể được thêm vào bộ sưu tập tại một "địa điểm" cụ thể theo thứ tự .

Java sử dụng "bộ sưu tập được sắp xếp" để có nghĩa là một bộ sưu tập, chẳng hạn như Sortedset, trong đó (không giống như Danh sách), thứ tự mà trình vòng lặp đi qua bộ sưu tập theo Bộ so sánh được chỉ định hoặc thứ tự tự nhiên của các phần tử.

Vì vậy, sự khác biệt là việc đặt hàng phụ thuộc vào các giá trị ("được sắp xếp") hay là một thuộc tính mà các thành phần có độc lập với giá trị của chúng ("được đặt hàng").


1
Câu trả lời hay và +1 khi đề cập đến "Java". Nó kinda định nghĩa được chấp nhận ở hầu hết các nơi quá, giống như OrderedDicttrong python. Nhưng trong .NET, giao diện cho liệt kê "đã sắp xếp" được gọi IOrderedEnumerable. Vì vậy, nó phụ thuộc. Chỉ cần nói ..
nawfal

9

Vâng, mặc dù các khái niệm là tương tự nhau.

List là một bộ sưu tập có thứ tự: mỗi phần tử có một chỉ mục, tạo thành một thứ tự của các phần tử, nhưng thường không liên quan đến bất kỳ thuộc tính nào của chính các phần tử.

SortedMapSortedSetđược sắp xếp các bộ sưu tập, có nghĩa là việc lặp qua bộ sưu tập sẽ xảy ra theo một chuỗi xuất phát từ chính các phần tử. Ví dụ: nếu bạn có SortedSet<String>thì các Chuỗi sẽ được sắp xếp theo thứ tự sắp xếp từ vựng.

Bộ sưu tập theo thứ tự có thể được sắp xếp nhưng không nhất thiết phải (ví dụ sau khi sử dụng Collections.sort()) khi thứ tự bên ngoài trùng với thứ tự sắp xếp của các thành phần. Một bộ sưu tập được sắp xếp luôn được sắp xếp theo thứ tự ngầm (nghĩa là luôn có phần tử "đầu tiên" và nó luôn giống như miễn là bạn không thêm phần tử khác, phần tử nhỏ hơn).


5

Một bộ sưu tập theo thứ tự là một bộ sưu tập theo dõi một chỉ mục liên tiếp mà mọi phần tử được chèn vào.

Bộ sưu tập được sắp xếp là một bộ sưu tập có thứ tự khi thứ tự bổ sung phụ thuộc vào giá trị của phần tử được chèn vào, trong suốt quá trình sử dụng giao diện So sánh cung cấp cho bạn một phương thức để xác định tiêu chí sắp xếp.

Tôi hy vọng nó có thể giúp đỡ.


2

Sắp xếp sẽ ngụ ý sắp xếp theo một triển khai so sánh hoặc so sánh. Ordered sẽ ngụ ý rằng nó tuân theo thứ tự chèn hoặc một số định nghĩa khác về thứ tự phù hợp và được xác định, nhưng nếu không thì tùy ý.

Vì vậy, một danh sách các chuỗi được sắp xếp sẽ được sắp xếp theo phương thức String.compareTo. Một danh sách có thể chứa một danh sách các chuỗi được chèn theo thứ tự tùy ý, nhưng thứ tự đó sẽ luôn giữ nguyên.

Tất nhiên, có các phương thức trên lớp Bộ sưu tập để sắp xếp danh sách.


1

Một bộ sưu tập được sắp xếp thường có nghĩa là các phần tử được sắp xếp từ giá trị minimun đến giá trị maxinum hoặc ngược lại tùy thuộc vào (các) thuộc tính của các phần tử mà thuật toán hoạt động.

đối với một bộ sưu tập interger, số được sắp xếp có thể từ số tối thiểu đến số tối đa cho bộ sưu tập người, nó có thể được tính theo chiều cao của người hoặc cân nặng của người, v.v.

Khi nói về thứ tự, nó thường có nghĩa là thứ tự chèn. Thứ tự có thể được thay đổi sau khi sắp xếp


0

Bộ sưu tập được sắp xếp so với Bộ sưu tập được đặt hàng

1. Bộ sưu tập sắp xếp

Một bộ sưu tập được sắp xếp đang sắp xếp một bộ sưu tập bằng cách sử dụng các tính năng sắp xếp được cung cấp bởi khung bộ sưu tập Java. Việc sắp xếp xảy ra trong bộ nhớ của JVM chạy Hibernate, sau khi dữ liệu được đọc từ cơ sở dữ liệu bằng cách sử dụng bộ so sánh java.

Nếu bộ sưu tập của bạn không lớn, nó sẽ là cách hiệu quả hơn để sắp xếp nó. Khi nó xảy ra trong bộ nhớ jvm, nó có thể loại bỏ lỗi Bộ nhớ.

2. Bộ sưu tập đơn hàng

Bộ sưu tập đơn hàng đang sắp xếp một bộ sưu tập bằng cách chỉ định mệnh đề theo thứ tự trong truy vấn để sắp xếp bộ sưu tập này khi truy xuất. Nếu bộ sưu tập của bạn rất lớn, nó sẽ là cách hiệu quả hơn để sắp xếp nó. Nó là nhanh so với bộ sưu tập được sắp xếp.

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.