Sıralı ve sıralı koleksiyon arasındaki fark nedir?


132

Sıralanmış ve sıralı bir koleksiyon arasında herhangi bir fark var mı ?


1
Cevapları burada tam anlamıyla almayın. Bu, yaygın olarak anlaşılan ve kabul edilen türden bir tanım olsa da, bilgisayar terminolojisindeki fiili tanım değildir. Örneğin, .NET'te "sıralı" numaralandırılabilir arabirim olarak adlandırılır IOrderedEnumerable (komik olan şey, .NET'te çok tutarlı değildir. NET'te bir "ekleme sırası" saygılı sözlüğe denir OrderedDictionaryki, bazıları bunun yanlış bir adlandırma olduğuna inanılır, IndexedDictionary) . Evet, java dünyasında (çoğunlukla başka yerlerde de) cevaplarda ne olduğunu kastediyorlar. Daha fazlası için buraya bakın .
nawfal

Bazı uygulama örnekleri adlandırmayı yanlış anlarsa bu, hatasını yaymak için bir neden değildir. İyi cevapları olan iyi bir soru. Doğru adlandırma kullanın - kendiniz dahil herkes için kafa karışıklığını azaltmaya yardımcı olur.
foo

Yanıtlar:


168

Bir koleksiyon sipariş toplama elemanları belli bir düzene sahip olduğunun araçları. Sipariş, değerden bağımsızdır. Bir Liste bir örnektir.

bir koleksiyon sıralanmış toplama düzeni var sadece aracı ancak sipariş elemanının değerine bağlıdır. Bir SortedSet bir örnektir.

Buna karşılık, herhangi bir sıraya sahip olmayan bir koleksiyon , öğeleri herhangi bir sırada tutabilir. Bir Set bir örnektir.


1
Öncelik kuyruğu sıralı bir koleksiyon mu?
aşırı değişim

@overexchange Yukarıdaki tanımlar göz önüne alındığında, öncelik hemen hemen her zaman kuyruktaki öğelerin bir özelliği olarak tanımlandığından, bir öncelik kuyruğu çoğu durumda sıralı bir koleksiyon olacaktır.
cdeszaq

SortedSet, Set'ten miras aldıysa ve onunla bir -bir ilişkisi varsa, Set'in herhangi bir düzen olmadığını nasıl söyleyebilirsiniz
xpioneer

79

Sıralı bir koleksiyon, öğeleri koleksiyona koyduğunuz / koleksiyondan çıkardığınız sıraya göre öğelerin sırasını korur.

Sıralanmış bir koleksiyon, öğeleri bir sıralama ölçütüne göre sıralı tutar.


18

Java, List gibi bir koleksiyonu ifade etmek için "sıralı koleksiyon" kullanır; burada (HashSet'in aksine) koleksiyon, öğelerin hangi sırada olması gerektiğini hatırlar. Böylece öğeler, koleksiyona sıradaki belirli bir "yerde" eklenebilir .

Java, SortedSet gibi bir koleksiyonu ifade etmek için "sıralı koleksiyon" kullanır; burada (Listeden farklı olarak), yineleyicinin koleksiyonu gezme sırası, belirli bir Karşılaştırıcıya veya öğelerin doğal sırasına uygundur.

Dolayısıyla fark, sıralamanın değerlere ("sıralı") bağlı mı yoksa öğelerin değerlerinden bağımsız olarak sahip olduğu bir özellik mi ("sıralı") olmasıdır.


1
Java'dan bahsettiğiniz için güzel yanıt ve +1. Onun tür gibi çok çoğu yerde, içinde kabul edilmiş bir tanım OrderedDictpython. Ancak .NET'te "sıralı" numaralandırılabilir arabirim çağrılır IOrderedEnumerable. Yani değişir. Sadece söylüyorum ..
nawfal

9

Evet, kavramlar benzer olsa da.

List sıralı bir koleksiyondur: her öğenin, öğelerin sırasını oluşturan, ancak genellikle öğelerin herhangi bir özelliğiyle ilgili olmayan bir dizini vardır.

SortedMapve SortedSetsıralı koleksiyonlardır; bu, koleksiyon boyunca yinelemenin, öğelerin kendilerinden türetilen bir sırayla gerçekleşeceği anlamına gelir. Örneğin, bir SortedSet<String>diziniz varsa Dizeler sözlükbilimsel sıralama düzenine göre sıralanır.

Bir Koleksiyon sipariş edebilirsiniz (mesela kullandıktan sonra sıralanmaya ama olmak zorunda değildir Collections.sort()harici sipariş elemanları sıralama düzeni ile özdeş olduğunda). Sıralanmış bir koleksiyon her zaman dolaylı olarak sıralanır (yani her zaman bir "ilk" öğe vardır ve başka, daha küçük bir tane eklemediğiniz sürece her zaman aynıdır).


5

Sıralı bir koleksiyon, her öğenin eklendiği ardışık bir dizini izleyen bir koleksiyondur.

Sıralanmış bir koleksiyon, size sıralama ölçütlerini tanımlamak için bir yöntem sağlayan Karşılaştırılabilir arayüzün kullanımı boyunca, sıra ek olarak eklenecek öğenin değerine bağlı olduğunda sıralı bir koleksiyondur.

Umarım yardımcı olabilir.


2

Sıralı, Comparable veya Comparator uygulamasına göre sıralama anlamına gelir. Sıralı, ekleme emrini veya tutarlı ve tanımlanmış, ancak başka türlü keyfi olan başka bir sipariş tanımını takip ettiğini ima eder.

Dolayısıyla, sıralı dizeler listesi String.compareTo yöntemine göre sıralanır. Bir liste, rastgele sırayla eklenen dizelerin bir listesini içerebilir, ancak bu sıra her zaman aynı kalacaktır.

Elbette, Collections sınıfında bir listeyi sıralamak için yöntemler vardır.


1

Sıralı bir koleksiyon genellikle, algoritmaların çalıştığı öğelerin özniteliklerine bağlı olarak öğelerin minimum değerden maksimum değere veya tam tersi şekilde sıralandığı anlamına gelir.

Bir interger koleksiyonları için, sıralama, bir kişi koleksiyonu için minimum sayıdan maksimum sayıya kadar olabilir, kişilerin boylarına veya kişilerin ağırlığına, vb. göre sınıflandırılabilir.

Sipariş hakkında konuşurken, genellikle ekleme sırası anlamına gelir. Sıralamadan sonra sıra değiştirilebilir


0

Sıralanmış Koleksiyon - Sıralanmış Koleksiyon

1. Sıralanmış koleksiyon

Sıralanmış bir koleksiyon, Java koleksiyonları çerçevesi tarafından sağlanan sıralama özelliklerini kullanarak bir koleksiyonu sıralar. Sıralama, veriler java karşılaştırıcı kullanılarak veritabanından okunduktan sonra, Hibernate çalıştıran JVM belleğinde gerçekleşir.

Koleksiyonunuz büyük değilse, onu sıralamak daha verimli olacaktır. Jvm belleğinde olduğu gibi, Bellek Yetersiz hatası verebilir.

2. Sipariş toplama

Sipariş koleksiyonu, alma sırasında bu koleksiyonu sıralamak için sorguda order-by yan tümcesini belirterek bir koleksiyonu sıralıyor. Koleksiyonunuz çok büyükse, onu sıralamak daha verimli olacaktır. Sıralanmış koleksiyona göre hızlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.