Differenza tra Array e ArrayList Differenza tra

Anonim

Che cos'è Array e ArrayList?

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.

Differenza tra Array e Arraylist

  1. Ridimensionabile

Una delle differenze principali e evidenti 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.

  1. Generics

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 l'unico 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.

  1. Primitive

I tipi di dati primitivi come int, double, long e char non sono consentiti 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.

  1. Lunghezza

Per ottenere la lunghezza della matrice, il codice deve accedere all'attributo della lunghezza perché è necessario conoscere la lunghezza per eseguire operazioni sulla matrice.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 array ArrayLengthTest {

public static void main (String [] args) {

ArrayList arrList = new ArrayList ();

String [] items = {"One", "Two", "Three"};

per (Str str: items) {

arrList. aggiungi (str);

}

int size = elementi. dimensione();

Sistema. su. println (dimensioni);

}

}

  1. Implementazione

L'array è un componente di programmazione nativo in Java creato dinamicamente 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.

  1. Prestazioni

Sebbene entrambe le strutture dati forniscano prestazioni di tipo simile a quelle di ArrayList supportate dagli Array, una ha un vantaggio rispetto ad un'altra 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à significativamente meglio di 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.

Array vs. Arraylist

Array ArrayList
Array è una struttura dati a lunghezza fissa la cui lunghezza non può essere modificata una volta creato l'oggetto array. 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à.
Usa l'operatore di assegnazione per memorizzare gli 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.
Arrays e Generics non vanno di pari passo. I dati generici sono consentiti in ArrayList.
Gli array 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 delle raccolte 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.

Riepilogo

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 fa ri performante. 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 utilizzare un array e, se non sei sicuro delle dimensioni, vai con ArrayList.