Ich habe durch den Quelltext für java.util.Arrays gesucht und beim Sortieren bezieht sich immer auf die Länge des Arrays (die für eine ArrayList nehme ich annimmt bezieht sich auf die Länge der E [] Daten (transient) -Feld . Aber sollte es nicht tatsächlich beziehen sich auf die Größe Feld, da sie einander nicht immer gleich sind.Wie behandelt java.util.Arrays das Sortieren einer ArrayList (Länge vs Größe)?
Antwort
fand die Antwort in Collections
, ruft toArray()
, die eine Anordnung der Arraylist zurückgibt, dessen Länge gleich auf die Größe, sortiert Arrays
die Kopie und Collections
verwendet, dass die tatsächliche Arraylist zu sortieren.
wenn es immer bezieht sich auf die lengt Sortierung h des Arrays
Nein, tut es nicht. Für jeden Datentyp gibt es eine Überladung von Arrays.sort
, die fromIndex
und toIndex
Parameter akzeptiert, die den genauen Teil des zu sortierenden Arrays angeben, wie Arrays.sort(Object[] a, int fromIndex, int toIndex, Comparator<? super T> c)
.
, dass das Verfahren von ArrayList.sort
aufgerufen:
public void sort(Comparator<? super E> c) {
final int expectedModCount = modCount;
Arrays.sort((E[]) elementData, 0, size, c);
if (modCount != expectedModCount) {
throw new ConcurrentModificationException();
}
modCount++;
}
Die ArrayList
gibt seine eigenen size
variable direkt mit dem Sortierverfahren.
Für eine List
die nicht its sort
method enthebt, die default implementation zunächst den Inhalt in ein temporäres Array-Dumps und Sortiervorgänge, die:
Die Standardimplementierung eine Anordnung enthält, um alle Elemente in dieser Liste erhält, sortiert das Array, und iteriert über diese Liste und setzt jedes Element von der entsprechenden Position im Array zurück. (Dies vermeidet die n2 log (n) Leistung, die von dem Versuch zu sortieren eine verkettete Liste an Ort und Stelle zur Folge hätte.)
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
Ab Java 8, die alte Methode Collections.sort(list)
ruft nur list.sort(null)
.
Bereits die Antwort gefunden, aber Ihre ist klarer. –
- 1. java.lang.ClassCastException: java.util.Arrays $ Arraylist kann nicht java.lang.Integer
- 2. Zugriff auf Jira Payload in JAVA (java.util.Arrays $ ArrayList) nicht möglich
- 3. Java Größe von ArrayList von Arraylist
- 4. Wie Kategorien Arraylist zu sortieren?
- 5. Sortieren einer 2D-ArrayList nach jeder Spalte
- 6. Sortieren einer ArrayList nach primitiven booleschen Typ
- 7. Versucht, Namen nach Länge zu sortieren
- 8. eindimensionale Array Shapes (Länge,) vs. (Länge 1) vs. (Länge)
- 9. Java ArrayList nach Objekteigenschaft sortieren
- 10. Sortieren einer ArrayList von Objekten (ArrayList wird nach dem Sortieren nicht geändert)
- 11. Wie würde ich diese Arraylist alphabetisch sortieren?
- 12. Android - Wie ArrayList nach Datum zu sortieren?
- 13. Wie behandelt man das Ende einer ComboBox?
- 14. Sortieren von ArrayList nach Datum
- 15. Sortieren einer ArrayList funktioniert nicht in einer Recyclerview
- 16. Sortieren nach Länge des Feldes
- 17. Anzeige vs Suche vs Sortieren von Strings in einer Datenbank
- 18. Fehler, wenn ich importieren java.util.Arrays
- 19. .NET: Arraylist vs Liste
- 20. ArrayList-Deklaration vs Konvertierung
- 21. Lists.newArrayList vs neue ArrayList
- 22. Vektor vs Sammlungen.synchronizedList (ArrayList)
- 23. Wie behandelt getallusers vs getuser in userscomponent?
- 24. Sortiersets in ArrayList nach Größe
- 25. Vergleichen und Finden einer ArrayList mit der längsten Länge
- 26. Arraylist Größe kleiner als real
- 27. Länge vs Präzision
- 28. Wie behandelt jQuery das Klickereignis?
- 29. LinkedHashMap vs HashMap! = LinkedList vs ArrayList
- 30. Leistung von LinkedList vs ArrayList bei der Verwaltung einer geordneten Liste
Da Sie bereits in diese Quelle gegraben haben, warum nicht ein paar davon veröffentlichen? Es gibt mehr als eine Version des JDK da draußen, also wer weiß, dass wir alle den Quellcode betrachten würden, den Sie gesehen haben ?! – GhostCat
'Arrays' haben nichts damit zu tun,' ArrayList' zu sortieren, denkst du an 'Collections'? –