順序付けられたコレクションと並べ替えられたコレクションの違いは何ですか?


132

並べ替えられたコレクションと順序付けられたコレクションに違いはありますか?


1
ここでの答えを文字どおりに受け取らないでください。これは広く理解され認められている種類の定義ですが、コンピュータ用語における事実上の定義ではありません。例えばのために、.NETに列挙が呼び出され、「並べ替え」のためのインタフェースがIOrderedEnumerable (面白いことに、.NET。アン「の挿入順序」.NETでrespectin辞書が呼び出されるのは非常に一貫性がないOrderedDictionary、いくつかが言うと比較して誤った名称であると信じていますIndexedDictionary。はい、Javaの世界では(主に他の場所でも)、答えの意味を示しています。詳しくはこちらをご覧ください
nawfal

実装インスタンスの名前が間違っている場合、それはそのエラーを伝播する理由にはなりません。それは良い質問であり、良い答えがあります。適切な名前を使用する-自分を含むすべての人の混乱を減らすのに役立ちます。
foo

回答:


166

アンは、収集命じたコレクションの要素が特定の順序を持っていることを意味します。順序は値とは無関係です。A リストは一例です。

ソートされたコレクションだけでなく、コレクションが注文を持っているん手段が、順序は要素の値に依存します。A たSortedSetは一例です。

対照的に、順序のないコレクションは、要素を任意の順序で維持できます。A セットは一例です。


1
優先キューは順序付けられたコレクションですか?
オーバーエクスチェンジ

@overexchange上記の定義が与えられた場合、優先度はほとんど常にキュー内の要素のプロパティとして定義されるため、優先度キューはほとんどの場合ソートされたコレクションになります。
cdeszaq 2018年

SortedSetがSetを継承し、それとis-a関係がある場合、Setは順序なしと言うことができます
xpioneer

79

順序付けられたコレクションは、要素をコレクションに追加したり、コレクションから削除したりする順序に基づいて要素の順序を維持します。

並べ替えられたコレクションは、並べ替え基準に基づいて要素を並べ替えたままにします。


18

Javaは「順序付きコレクション」を使用して、Listなどのコレクションを意味します(HashSetとは異なり)、コレクションは要素の順序を覚えています。そのため、要素をコレクションの特定の「場所」に追加できます。 。

Javaは「ソート済みコレクション」を使用して、SortedSetなどのコレクションを意味します(リストとは異なり)、イテレータがコレクションを走査する順序は、指定されたコンパレータまたは要素の自然順序に従います。

したがって、違いは、順序が値に依存する(「並べ替えられた」)か、要素がその値とは無関係に持つプロパティ(「順序付けされた」)であるかです。


1
良い答えで、「Java」について言及した場合は+1。そのちょっとのような、あまりにもほとんどの場所で受け入れられている定義OrderedDictのpythonインチ しかし.NETでは、「ソートされた」列挙可能なインターフェースはと呼ばれIOrderedEnumerableます。したがって、状況によって異なります。ただ言って..
nawfal

9

はい、概念は似ていますが。

List は順序付けられたコレクションです。各要素にはインデックスがあり、要素の順序を形成しますが、通常は要素自体のプロパティには関連付けられていません。

SortedMapそしてSortedSetコレクション、コレクションが要素自体に由来する配列に起こるのだろう繰り返し処理という手段をソートされています。たとえば、aがあるSortedSet<String>場合、文字列は辞書式のソート順に従ってソートされます。

順序付けられたコレクション並べ替えることできますがCollections.sort()、外部の順序付けが要素の並べ替え順序と同じである場合(たとえばを使用した後)は、並べ替える必要はありません。ソートされたコレクションは常に暗黙的に順序付けられます(つまり、常に「最初の」要素があり、別の小さい要素を追加しない限り、常に同じです)。


5

順序付けられたコレクションは、すべての要素が挿入される連続したインデックスを追跡するコレクションです。

並べ替えられたコレクションは、並べ替え基準を定義するメソッドを提供するComparableインターフェイスの使用全体を通して、挿入される要素の値に順序がさらに依存する場合、順序付けられたコレクションです。

お役に立てば幸いです。


2

並べ替えは、ComparableまたはComparatorの実装による順序付けを意味します。順序付けは、それが挿入順序または一貫して定義されているが他の任意の順序の他の順序の定義に従っていることを意味します。

したがって、ソートされた文字列のリストは、String.compareToメソッドに従ってソートされます。リストには、任意の順序で挿入された文字列のリストが含まれる場合がありますが、その順序は常に同じです。

もちろん、Collectionsクラスにはリストを並べ替えるメソッドがあります。


1

並べ替えられたコレクションとは、通常、アルゴリズムが機能する要素の属性に応じて、要素が最小値から最大値、またはその逆に並べ替えられることを意味します。

整数のコレクションの場合、並べ替えは、人物のコレクションの最小数から最大数まで、人の身長や体重などによって並べ替えられます。

順序について話すとき、それは通常挿入の順序を意味します。並べ替え後に順序が変わる場合があります


0

並べ替えられたコレクション順序付けられたコレクション

1.ソートされたコレクション

ソートされたコレクションとは、Javaコレクションフレームワークによって提供されるソート機能を利用してコレクションをソートすることです。Javaコンパレーターを使用してデータベースからデータが読み取られた後、Hibernateを実行しているJVMのメモリーでソートが行われます。

コレクションが大きくない場合は、より効率的に並べ替えることができます。これはjvmメモリーで発生するため、メモリー不足エラーをスローする可能性があります。

2.注文の収集

Order Collectionは、クエリでorder-by句を指定してコレクションをソートし、取得時にこのコレクションをソートします。コレクションが非常に大きい場合、それはそれをソートするためのより効率的な方法になります。ソートされたコレクションと比較して高速です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.