Sia Array che ArrayList sono strutture di dati basate su indici che vengono spesso utilizzate nei programmi Java. Concettualmente, ArrayList è internamente supportato da array, tuttavia, comprendere la differenza tra i due è la chiave per diventare un grande sviluppatore Java. È piuttosto il passo fondamentale da cui partire, specialmente i principianti che hanno appena iniziato a programmare. Sebbene entrambi siano utilizzati per archiviare elementi in Java, che possono essere primitivi o oggetti, hanno una buona dose di differenze in termini di funzionalità e prestazioni. La principale differenza tra i due è che Array è statico mentre ArrayList è di natura dinamica. Questo articolo confronta i due su vari aspetti in modo che tu possa scegliere l'uno rispetto all'altro.
Una delle principali e notevoli differenze tra le due strutture dati è che Array è di natura statica, il che significa che è un tipo di dati a lunghezza fissa mentre ArrayList è di natura dinamica, il che significa che è una struttura di dati a lunghezza variabile. In termini tecnici, la lunghezza di Array non può essere modificata o modificata una volta creato l'oggetto Array. Contiene la raccolta sequenziale di elementi dello stesso tipo di dati. Le matrici in Java funzionano in modo diverso da come funzionano in C / C ++. ArrayList, d'altra parte, può ridimensionare se stesso e gli array possono crescere come necessario. Essendo una struttura dati dinamica, gli elementi possono essere aggiunti e rimossi dalla lista.
Non è possibile creare array di classi generiche di interfacce in Java in modo che array e generici non vadano di pari passo rendendo impossibile la creazione di array generico per il solo motivo fondamentale per cui gli array sono covarianti mentre i generici sono invarianti. Mentre Array è una struttura di dati a lunghezza fissa, contiene oggetti della stessa classe o primitive del tipo di dati specifico. Pertanto, se si tenta di memorizzare un tipo di dati diverso da quello specificato durante la creazione dell'oggetto Array, viene semplicemente visualizzato "ArrayStoreException". ArrayList, d'altra parte, supporta Generics per garantire la sicurezza del tipo.
Non sono consentiti tipi di dati primitivi come int, double, long e char in ArrayList. Piuttosto tiene oggetti e le primitive non sono considerate oggetti in Java. Gli array, d'altra parte, possono contenere sia le primitive che gli oggetti in Java perché è una delle strutture di dati più efficienti in Java per l'archiviazione degli oggetti. È un tipo di dati aggregati progettato per contenere oggetti che possono essere di tipo uguale o diverso.
Per ottenere la lunghezza della matrice, il codice deve accedere all'attributo length perché è necessario conoscere la lunghezza per eseguire operazioni su array. Mentre ArrayList usa il metodo size () per determinare la dimensione di ArrayList, è piuttosto diverso dal determinare la lunghezza della matrice. L'attributo del metodo size () determina il numero di elementi in un ArrayList, che a sua volta è la capacità di ArrayList.
Per esempio:
public class ArrayLengthTest
public static void main (String [] args)
ArrayList arrList = new ArrayList ();
String [] items = "One", "Two", "Three";
for (Stringa: articoli)
arrList.add (str);
int size = items.size ();
System.out.println (dimensioni);
Array è un componente di programmazione nativo in Java creato in modo dinamico e utilizza l'operatore di assegnazione per conservare gli elementi, mentre ArrayList utilizza l'attributo add () per inserire elementi. ArrayList è una classe del framework di raccolta in Java che utilizza una serie di metodi specificati per accedere e modificare gli elementi. La dimensione di un ArrayList può essere aumentata o diminuita dinamicamente. Gli elementi di una matrice sono memorizzati in una posizione di memoria contigua e le sue dimensioni rimangono statiche in tutto.
Sebbene entrambe le strutture di dati forniscano un tipo di prestazioni simile a un ArrayList supportato da Array, uno ha un vantaggio rispetto ad un altro principalmente in termini di tempo di CPU e utilizzo della memoria. Diciamo che se si conosce la dimensione dell'array, è probabile che tu vada con ArrayList. Tuttavia, l'iterazione su una matrice è un po 'più veloce dell'iterazione su una ArrayList. Se il programma prevede un numero elevato di primitive, un array funzionerà in modo significativamente migliore rispetto a ArrayList, in termini di tempo e memoria. Le matrici sono un linguaggio di programmazione di basso livello che può essere utilizzato nelle implementazioni di raccolta. Tuttavia, le prestazioni potrebbero variare in base all'operazione che stai eseguendo.
schieramento | Lista di array |
La matrice è una struttura di dati a lunghezza fissa la cui lunghezza non può essere modificata una volta creato l'oggetto matrice. | ArrayList è di natura dinamica, il che significa che può ridimensionarsi per crescere quando richiesto. |
La dimensione di un array rimane statica in tutto il programma. | Le dimensioni di un ArrayList possono crescere dinamicamente a seconda del carico e della capacità. |
Utilizza l'operatore di assegnazione per memorizzare elementi. | Usa l'attributo add () per inserire elementi. |
Può contenere sia primitive che oggetti di stesso o diverso tipo di dati. | I primitivi non sono consentiti in ArrayList. Può contenere solo tipi di oggetto. |
Array e generici non vanno di pari passo. | I generici sono consentiti in ArrayList. |
Le matrici possono essere multi-dimensionali. | ArrayList è unidimensionale. |
È un componente di programmazione nativo in cui gli elementi sono memorizzati in posizioni di memoria contigue. | È una classe del framework di collezioni di Java in cui gli oggetti non vengono mai archiviati in posizioni contigue. |
La variabile di lunghezza viene utilizzata per determinare la lunghezza della matrice. | Il metodo Size () viene utilizzato per determinare la dimensione di ArrayList. |
Prende meno memoria di ArrayList per memorizzare elementi o oggetti specificati. | Prende più memoria rispetto alla matrice per memorizzare oggetti. |
L'iterazione su un array è più veloce di iterare su un ArrayList. | L'iterazione su un ArrayList è significativamente più lenta in termini di prestazioni. |
Mentre alcuni potrebbero pensare che implementare array in un programma possa ottenere risultati più velocemente rispetto a fare lo stesso con ArrayLists per il semplice motivo che gli array sono una struttura di dati di basso livello, le prestazioni possono variare in base all'operazione che si sta eseguendo. Bene, la lunghezza di una matrice è fissa, mentre la dimensione di ArrayList può essere aumentata o diminuita dinamicamente, quindi ArrayList ha un piccolo vantaggio sull'array in termini di funzionalità. Tuttavia, nonostante le differenze, condividono anche alcune somiglianze. Entrambe sono strutture di dati basate su indici in Java che consentono di memorizzare oggetti e consentono sia valori nulli che duplicati. Bene, se conosci in anticipo la dimensione degli oggetti, dovresti usare un array, e se non sei sicuro delle dimensioni, vai con ArrayList.