Ho lavorato su alcuni modi per ottimizzare LinkedList. Qualcuno sa se la classe LinkedList con doppia connessione predefinita Java è ottimizzata per fare operazioni get()
al contrario? Per esempio:La LinkedList di Java è ottimizzata per ottenere (indice) al contrario quando necessario?
// Some LinkedList list that exists with n elements;
int half = list.size()/2;
list.get(half + 1);
sarebbe la chiamata al list.get(half + 1)
ottimizzare la ricerca e andare in senso inverso in quanto si tratta di una lista doppiamente legata? Avrebbe più senso fare la ricerca dalla fine e andare verso il centro se si sa che l'elemento è nella seconda metà della lista.
So che l'utilizzo di get(index)
è O(n)
e che è necessario utilizzare un iteratore quando si attraversa una LinkedList, ma sono solo curioso.
È proprio lì nel terzo paragrafo del javadocs (secondo paragrafo in Java 7): 'Le operazioni che indicizzano l'elenco attraverseranno l'elenco dall'inizio o alla fine, a seconda di quale sia più vicino all'indice specificato. – yshavit
Solo si noti che dal POV delle prestazioni, la maggior parte degli usi di LinkedList sono comunque un errore. – maaartinus