Questo inserimento avviene in O (n) perché deve spostare tutti gli elementi verso il basso e nel peggiore dei casi lo spostamento di ogni elemento verso il basso. (Corretto java dice che è O (n) perché usano una formula matematica da inserire)
Se si desidera un inserimento veloce, aggiungerlo alla fine dell'array o utilizzare una hashmap che è un tempo costante.
Inserire nel hashmap: HashMap peopleMap = new HashMap .....
peopleMap.put (person.name, persona); // (o quello che si desidera tracciare)
Imposta la chiave per il nome delle persone e il valore per persona.
Si può anche provare una hashmap con chiave (ehatver che si desidera tracciare) e valutare l'indice in cui la persona si trova in una matrice di supporti. L'inserto è O (i), look O (i) e puoi anche ordinarlo (lo lascerò come esercizio al lettore)
Se l'intero scopo di questo è di ordinare, quindi per semplicità è possibile inserire in una priorityQueue (nLogn) quindi inserire tutto nell'array che fornirà un array ordinato
fonte
2013-06-17 11:20:57
Bene, quanto è grande la tua lista? Se inserisci i dati in una lista molto ampia, copi molti dati ... –
Vuoi dire - esiste una implementazione di lista più efficiente per l'inserimento? –
Sarei sorpreso se ci sarebbe un modo più efficiente usando ArrayList. Le funzioni principali dovrebbero essere ottimizzate bene. Inoltre consideri 1,5 ms lenti? –