Diese Einfügung findet in O (n) statt, weil sie alle Elemente nach unten verschieben muss und im Worst-Case-Szenario wird jedes Element nach unten verschoben. (Korrigiertes Java sagt, es ist O (n), weil sie eine mathematische Formel verwenden)
Wenn Sie eine schnelle Einfügung wünschen, fügen Sie sie entweder am Ende der Arraylist hinzu oder verwenden Sie eine Hashmap, die eine konstante Zeit ist.
in hashmap einfügen: HashMap peopleMap = new HashMap .....
peopleMap.put (person.name, Person); // (oder was auch immer Sie verfolgen möchten)
Dies legt den Schlüssel für den Namen der Person und den Wert für die Person fest.
Sie können auch eine HASHAMP mit Schlüssel versuchen (je nachdem, was Sie verfolgen möchten) und den Index für die Person in einem Halter-Array bewerten. Die Einfügung ist O (i), Nachschlagen O (i) und Sie können es auch sortieren (Ich überlasse es als eine Übung dem Leser)
Wenn der ganze Zweck davon ist zu sortieren, dann der Einfachheit halber Sie könnten in eine priorityQueue (nLogn) einfügen und dann alles in das Array einfügen, was Ihnen ein sortiertes Array liefert.
Wie groß ist Ihre Liste? Wenn Sie Daten früh in eine sehr große Liste einfügen, kopieren Sie sehr viele Daten ... –
Meinst du - gibt es eine Listenimplementierung, die effizienter zum Einfügen ist? –
Ich wäre überrascht, wenn es einen effizienteren Weg mit ArrayList geben würde. Kernfunktionen sollten ziemlich gut optimiert werden. Und denkst du, dass 1,5 ms langsam sind? –