Gibt es einen Unterschied zwischen einer sortierten und einer bestellten Sammlung?
Gibt es einen Unterschied zwischen einer sortierten und einer bestellten Sammlung?
Antworten:
Eine geordnete Sammlung bedeutet, dass die Elemente der Sammlung eine bestimmte Reihenfolge haben. Die Reihenfolge ist unabhängig vom Wert. Eine Liste ist ein Beispiel.
Eine sortierte Sammlung bedeutet, dass die Sammlung nicht nur eine Reihenfolge hat, sondern die Reihenfolge auch vom Wert des Elements abhängt. Ein SortedSet ist ein Beispiel.
Im Gegensatz dazu kann eine Sammlung ohne Reihenfolge die Elemente in beliebiger Reihenfolge verwalten. Ein Set ist ein Beispiel.
Java verwendet "geordnete Sammlung", um eine Sammlung wie List zu bezeichnen, bei der sich die Sammlung (im Gegensatz zu HashSet) merkt, in welcher Reihenfolge sich die Elemente befinden sollen. Daher können Elemente an einer bestimmten "Stelle" in der Reihenfolge zur Sammlung hinzugefügt werden .
Java verwendet "sortierte Sammlung", um eine Sammlung wie SortedSet zu bezeichnen, wobei (im Gegensatz zu List) die Reihenfolge, in der der Iterator die Sammlung durchläuft, einem angegebenen Komparator oder der natürlichen Reihenfolge der Elemente entspricht.
Der Unterschied besteht also darin, ob die Reihenfolge von den Werten abhängt ("sortiert") oder eine Eigenschaft ist, die Elemente unabhängig von ihrem Wert haben ("geordnet").
OrderedDict
in Python. In .NET wird jedoch die Schnittstelle für "sortierte" Enumerable aufgerufen IOrderedEnumerable
. Es kommt also darauf an.
Ja, obwohl die Konzepte ähnlich sind.
List
ist eine geordnete Sammlung: Jedes Element verfügt über einen Index, der eine Reihenfolge der Elemente bildet, sich jedoch normalerweise nicht auf eine Eigenschaft der Elemente selbst bezieht.
SortedMap
und SortedSet
sind sortierte Sammlungen, was bedeutet, dass die Iteration durch die Sammlung in einer Sequenz erfolgt, die von den Elementen selbst abgeleitet ist. Wenn Sie beispielsweise eine haben, werden SortedSet<String>
die Zeichenfolgen nach der lexikografischen Sortierreihenfolge sortiert.
Eine bestellte Sammlung kann sortiert werden, muss es aber nicht sein (z. B. nach der Verwendung Collections.sort()
), wenn die externe Reihenfolge mit der Sortierreihenfolge der Elemente identisch ist. Eine sortierte Sammlung ist immer implizit geordnet (dh es gibt immer ein "erstes" Element, und es ist immer dasselbe, solange Sie kein weiteres, kleineres hinzufügen).
Eine geordnete Sammlung ist eine Sammlung, die einen fortlaufenden Index verfolgt, in den jedes Element eingefügt wird.
Eine sortierte Sammlung ist eine geordnete Sammlung, wenn die Reihenfolge zusätzlich vom Wert des Elements abhängt, in das eingefügt werden soll. Dabei wird die Schnittstelle Comparable verwendet, mit der Sie die Sortierkriterien definieren können.
Ich hoffe es könnte helfen.
Sortiert würde bedeuten, nach einer Implementierung von Comparable oder Comparator zu ordnen. Bestellt würde bedeuten, dass es der Einfügereihenfolge oder einer anderen Definition der Reihenfolge folgt, die konsistent und definiert ist, aber ansonsten willkürlich.
Eine sortierte Liste von Zeichenfolgen würde also nach der String.compareTo-Methode sortiert. Eine Liste kann eine Liste von Zeichenfolgen enthalten, die in beliebiger Reihenfolge eingefügt werden. Diese Reihenfolge bleibt jedoch immer gleich.
Natürlich gibt es in der Collections-Klasse Methoden zum Sortieren einer Liste.
Eine sortierte Sammlung bedeutet normalerweise, dass die Elemente je nach Attribut (en) der Elemente, mit denen Algorithmen arbeiten, vom Minimalwert zum Maximalwert oder umgekehrt sortiert werden.
Für eine Interger-Sammlung kann die Sortierung von einer minimalen bis zu einer maximalen Anzahl für eine Personensammlung sein, sie kann durch die Größe von Personen oder das Gewicht von Personen usw. sortiert sein.
Wenn es um die Reihenfolge geht, bedeutet dies normalerweise die Reihenfolge des Einfügens. Die Reihenfolge kann nach dem Sortieren geändert werden
Sortierte Sammlung vs. bestellte Sammlung
1. Sortierte Sammlung
Eine sortierte Sammlung sortiert eine Sammlung unter Verwendung der Sortierfunktionen, die vom Java-Sammlungsframework bereitgestellt werden. Die Sortierung erfolgt im Speicher der JVM, in der Hibernate ausgeführt wird, nachdem die Daten mit dem Java-Komparator aus der Datenbank gelesen wurden.
Wenn Ihre Sammlung nicht groß ist, können Sie sie effizienter sortieren. Wie es im JVM-Speicher passiert, kann es zu einem Out of Memory-Fehler kommen.
2. Bestellung abholen
Bei der Auftragssammlung wird eine Sammlung sortiert, indem die Order-by-Klausel in der Abfrage angegeben wird, um diese Sammlung beim Abrufen zu sortieren. Wenn Ihre Sammlung sehr groß ist, können Sie sie effizienter sortieren. Es ist schnell im Vergleich zur sortierten Sammlung.
IOrderedEnumerable
(lustig ist, dass sie in .NET nicht sehr konsistent ist. Es wird ein "Einfügereihenfolge" -Respekt im Wörterbuch in .NET aufgerufen, vonOrderedDictionary
dem einige glauben, dass es eine falsche Bezeichnung ist, wenn man sagt:IndexedDictionary
) . Ja, in der Java-Welt (meistens auch anderswo) meinen sie, was Sie in den Antworten haben. Mehr dazu hier .