6

Naturalmente, conosco la differenza di prestazioni tra l'arraylist e la lista collegata. Ho eseguito personalmente dei test e ho visto l'enorme differenza di tempo e memoria per l'inserimento/la cancellazione e l'iterazione tra l'arraylist e la lista collegata per una lista molto ampia.Benefici di "entrambi" arraylist e linklist ... possibili in java?

(correggetemi se sbaglio) Abbiamo generalmente preferiscono arraylist oltre ListaLinkata perché:

1) Abbiamo praticamente fare iterazioni più spesso di inserzione/delezione. Quindi preferiamo le iterazioni più veloci dell'inserimento/eliminazione.

2) L'overhead di memoria di LinkedList è molto più di arraylist

3) Non c'è nessuna modo in cui possiamo definire una lista come LinkedList durante l'inserimento/eliminazione in batch e come arraylist mentre iterazione. È perché l'arraylist e la lista collegata hanno tecniche di archiviazione dei dati fondamentalmente diverse.

Mi sbaglio sul 3 ° punto [lo spero :) :)? C'è qualche possibilità di avere vantaggi di queste due strutture dati in un unico elenco? Immagino che i progettisti della struttura dei dati debbano aver pensato a questo.

+4

Possibile duplicato: http://stackoverflow.com/questions/1712952/is-there-a-known-implementation-of-an-indexed-linked-list – Aubin

+0

L'hai detto tu stesso, se esistesse una soluzione senza compromessi che avesse tutti questi vantaggi, nessuno sarebbe nemmeno a conoscenza di 'ArrayList' e' LinkedList'. –

+0

@Aubin grazie per il collegamento. +1 :) ma è una domanda del 2009. Qualche miglioramento nel campo delle strutture dati negli ultimi 3 anni? Soprattutto dopo il rilascio di Java 7? –

risposta

1

Se stai cercando alcune implementazioni di raccolta più performanti, controlla Javolution. Questo pacchetto fornisce uno FastList e FastTable che potrebbe ridurre almeno il costo di scelta tra elenchi collegati e elenchi di array.