Het is niet zo.
Even uitgebreider:
Je hebt 2 typen Lists standaard in Java: een ervan gebruikt een array op de achtergrond (ArrayList, Vector), de ander is een linked list (LinkedList).
ArrayList en Vector zijn O(1) voor toevoegen, mits:
a) je alleen aan het einde toevoegt. Zo niet, dan moet alles wat erna komt opgeschoven worden. Verder kan probleem b) ook nog eens voorkomen.
b) het interne array niet vol is. Er wordt een nieuw array gecreeerd, meestal 2x zo groot, en ALLES wordt daarnaartoe gekopieerd. Weliswaar dmv de native (dus snellere) System.arraycopy call, maar toch.
LinkedList kan wel degelijk in O(1) toevoegen, aan het begin of het einde. Voor elke andere positie moet eerst deze positie worden opgezocht, waarna er wel in O(1) het element toegevoegd wordt. Dat opzoeken kan echter O(n) zijn, omdat hij maximaal n/2 plekken moet afgaan.
More than meets the eye
There is no I in TEAM... but there is ME
system specs