Grafico comparativo
Base per il confronto | Elenco | Lista di array |
---|---|---|
Di base | Elenco è un'interfaccia | ArrayList è una classe di raccolta standard. |
Sintassi | Elenco delle interfacce | class ArrayList |
Estendere / Implementare | L'interfaccia dell'elenco estende il quadro di raccolta. | ArrayList estende AbstractList e implementa l'interfaccia di elenco. |
Spazio dei nomi | System.Collections.Generic. | System.Collections. |
Lavoro | È usato per creare una lista di elementi (oggetti) associati ai loro numeri di indice. | ArrayList è usato per creare una matrice dinamica che contiene oggetti. |
Definizione di lista
List è un'interfaccia che estende il framework Collection . L'interfaccia elenco descrive la raccolta di elementi disposti in sequenza. L'interfaccia di elenco è implementata dalle seguenti classi di raccolta standard come ArrayList, LinkedList, CopyOnWriteArrayList, Vector, Stack . L'interfaccia di elenco contiene elementi associati ai relativi numeri di indice. È possibile accedere a un elemento nell'elenco per la sua posizione (indice) nell'elenco. Un elenco creato utilizzando l'interfaccia Elenco inizia con un indice basato su zero.
Oltre ai metodi ereditati dal framework Collection, l'interfaccia List definisce anche un metodo a sé stante. I metodi aggiunti dall'interfaccia Elenco sono, add (int, E) e addAll (int, Collection) . Questi metodi aggiungono un elemento all'elenco tramite il loro indice. I metodi all'interno dell'elenco possono generare un'eccezione come UnsupportedOperationException se il metodo non è in grado di modificare l'elenco. Quando un oggetto in un elenco non è compatibile con un altro oggetto nell'elenco, viene generata anche ClassCastException. Gli elementi null non sono consentiti nell'elenco se si tenta di inserire un oggetto Null nell'elenco, viene generata NullPointerException .
Puoi ottenere un elemento dalla lista usando il metodo get () . È possibile impostare il valore di un elemento nell'elenco utilizzando il metodo set () . È anche possibile ottenere il sottolista dall'elenco utilizzando un metodo Sottolista () . Diventa conveniente operare sulla sottolista invece che su una lista.
Definizione di ArrayList
Una delle classi Collection standard è ArrayList che estende la classe AbstractList e implementa anche l'interfaccia List . La classe ArrayList viene utilizzata per creare gli array dinamici che crescono e si restringono quando richiesto. L'elenco creato utilizzando la classe ArrayList non è altro che l'array di oggetti. In Java, l'array standard ha la lunghezza fissa, quindi è necessario conoscere in anticipo la dimensione dell'array. Tuttavia, potrebbe non essere possibile conoscere la lunghezza dell'array necessaria fino al momento dell'esecuzione. Quindi, il framework Collection ha introdotto la classe ArrayList per superare questo problema.
ArrayList ha costruttori che creano l'array con la sua capacità iniziale. Sebbene la capacità dell'oggetto della classe ArrayList aumenti automaticamente quando gli elementi vengono aggiunti all'array, è comunque possibile aumentare manualmente la capacità dell'oggetto di ArrayList utilizzando il metodo ensureCapacity () . È preferibile aumentare inizialmente la capacità dell'array invece di riallocare la memoria in un secondo momento. Perché la riallocazione è più costosa dell'allocazione della memoria in una volta.
Differenze chiave tra List e ArrayList
- Una delle differenze più importanti tra List e ArrayList è che l'elenco è un'interfaccia e ArrayList è una classe Collection standard.
- L'interfaccia di lista estende il framework Collection mentre, ArrayList estende la classe AbstractList e implementa le interfacce List .
- Lo spazio dei nomi per l'interfaccia Elenco è System.Collection.Generic mentre, lo spazio dei nomi per ArrayList è System.Collection .
- L'interfaccia di lista crea una raccolta di elementi che sono memorizzati in una sequenza e sono identificati o accessibili dal loro numero di indice. D'altra parte, ArrayList crea una serie di oggetti in cui la matrice può crescere dinamicamente quando richiesto.
Conclusione:
ArrayList supera il problema di un array statico in Java standard, ovvero l'array non può crescere di dimensioni una volta creato. Quando viene creato un array utilizzando ArrayList, viene creato un array dinamico che può crescere e ridursi di dimensioni quando necessario. La classe di raccolta standard ArrayList estende l'interfaccia Elenco.