Array y ArrayList

Anonim

¿Qué es Array y ArrayList?

Tanto Array como ArrayList son estructuras de datos basadas en índices que se utilizan a menudo en programas Java. En términos conceptuales, ArrayList está respaldado internamente por arreglos, sin embargo, entender la diferencia entre los dos es la clave para convertirse en un gran desarrollador de Java. Para empezar, es un paso muy básico, especialmente los principiantes que acaban de comenzar a codificar. Si bien ambos se utilizan para almacenar elementos en Java, que pueden ser primitivos u objetos, tienen su parte justa de diferencias en términos de funcionalidad y rendimiento. La principal diferencia entre los dos es que Array es estático, mientras que ArrayList es de naturaleza dinámica. Este artículo compara los dos en varios aspectos para que pueda elegir uno sobre el otro.

Diferencia entre Array y Arraylist

  1. Redimensionable

Una de las diferencias principales y notables entre las dos estructuras de datos es que Array es de naturaleza estática, lo que significa que es un tipo de datos de longitud fija, mientras que ArrayList es de naturaleza dinámica, lo que significa que es una estructura de datos de longitud variable. En términos técnicos, la longitud de la matriz no se puede cambiar ni modificar una vez que se crea el objeto de la matriz. Contiene colección secuencial de elementos del mismo tipo de datos. Las matrices en Java funcionan de manera diferente a como funcionan en C / C ++. ArrayList, por otro lado, puede redimensionarse a sí misma y las matrices pueden crecer a medida que lo necesiten. Como se trata de una estructura de datos dinámica, los elementos se pueden agregar y eliminar de la lista.

  1. Genéricos

No se pueden crear matrices de clases genéricas de interfaces en Java, por lo que las matrices y los genéricos no van de la mano, lo que hace imposible crear una matriz genérica por la única razón básica de que las matrices son covariantes, mientras que los genéricos son invariantes. Si bien Array es una estructura de datos de longitud fija, contiene objetos de la misma clase o primitivas del tipo de datos específico. Por lo tanto, si intenta almacenar un tipo de datos diferente al que se especificó al crear el objeto Array, simplemente lanza "ArrayStoreException". ArrayList, por otro lado, soporta Genéricos para garantizar la seguridad de los tipos.

  1. Primitivas

Los tipos de datos primitivos como int, double, long y char no están permitidos en ArrayList. Más bien mantiene objetos y primitivos no se consideran objetos en Java. Las matrices, por otro lado, pueden contener primitivos así como objetos en Java porque es una de las estructuras de datos más eficientes en Java para almacenar objetos. Es un tipo de datos agregados que está diseñado para contener objetos que pueden ser del mismo tipo o diferentes.

  1. Longitud

Para obtener la longitud de la matriz, el código debe acceder al atributo de longitud porque se debe conocer la longitud para realizar operaciones en la matriz. Si bien ArrayList utiliza el método size () para determinar el tamaño de ArrayList, es bastante diferente de determinar la longitud de la matriz. El atributo del método size () determina el número de elementos en un ArrayList, que a su vez es la capacidad del ArrayList.

Por ejemplo:

clase pública ArrayLengthTest {

public static void main (String [] args) {

Lista de arreglo arrList = new ArrayList();

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

para (String str: items) {

arrList.add (str);

}

int size = items.size ();

System.out.println (tamaño);

}

}

  1. Implementación

Array es un componente de programación nativo en Java que se crea de forma dinámica y utiliza el operador de asignación para contener elementos, mientras que ArrayList usa el atributo add () para insertar elementos. ArrayList es una clase del marco de recopilación en Java que utiliza un conjunto de métodos específicos para acceder y modificar los elementos. El tamaño de un ArrayList se puede aumentar o disminuir dinámicamente. Los elementos de una matriz se almacenan en una ubicación de memoria contigua y su tamaño permanece estático.

  1. Actuación

Si bien ambas estructuras de datos proporcionan un tipo de rendimiento similar a un ArrayList con el respaldo de Arrays, uno tiene una pequeña ventaja sobre otro, principalmente en términos de tiempo de CPU y uso de memoria. Digamos que, si conoce el tamaño de la matriz, es probable que opte por ArrayList. Sin embargo, iterar sobre un Array es un poco más rápido que iterar sobre un ArrayList. Si el programa involucra un gran número de primitivas, una matriz tendrá un rendimiento significativamente mejor que el ArrayList, tanto en términos de tiempo como de memoria. Las matrices son un lenguaje de programación de bajo nivel que se puede usar en implementaciones de colecciones. Sin embargo, el rendimiento puede variar según la operación que esté realizando.

Array Vs. Lista de arreglo

Formación Lista de arreglo
La matriz es una estructura de datos de longitud fija cuya longitud no se puede modificar una vez que se crea el objeto de matriz. ArrayList es de naturaleza dinámica, lo que significa que puede redimensionarse para crecer cuando sea necesario.
El tamaño de una matriz permanece estático en todo el programa. El tamaño de un ArrayList puede crecer dinámicamente dependiendo de la carga y la capacidad.
Utiliza operador de asignación para almacenar elementos. Utiliza el atributo add () para insertar elementos.
Puede contener primitivos, así como objetos del mismo o diferente tipo de datos. Las primitivas no están permitidas en ArrayList. Solo puede contener tipos de objeto.
Las matrices y los genéricos no van de la mano. Los genéricos están permitidos en ArrayList.
Las matrices pueden ser multidimensionales. ArrayList es unidimensional.
Es un componente de programación nativo donde los elementos se almacenan en ubicaciones de memoria contiguas. Es una clase del marco de colecciones de Java donde los objetos nunca se almacenan en ubicaciones contiguas.
La variable de longitud se utiliza para determinar la longitud de la matriz. El método Size () se utiliza para determinar el tamaño del ArrayList.
Toma menos memoria que ArrayList para almacenar elementos u objetos especificados. Toma más memoria que la matriz para almacenar objetos.
Iterar sobre una matriz es más rápido que iterar sobre una ArrayList. Iterar sobre un ArrayList es significativamente más lento en términos de rendimiento.

Resumen

Si bien algunos pueden pensar que implementar arrays en un programa puede obtener resultados más rápido que haciendo lo mismo con ArrayLists por la sencilla razón de que los arrays son una estructura de datos de bajo nivel, el rendimiento puede variar según la operación que esté realizando. Bueno, la longitud de un Array es fija, mientras que el tamaño de ArrayList se puede aumentar o disminuir dinámicamente, por lo que ArrayList tiene una pequeña ventaja sobre el Array en términos de funcionalidad. Sin embargo, a pesar de las diferencias, también comparten algunas similitudes. Ambas son estructuras de datos basadas en índices en Java que le permiten almacenar objetos y ambas permiten valores nulos y duplicados. Bueno, si conoce el tamaño de los objetos de antemano, debe ir con una matriz, y si no está seguro sobre el tamaño, vaya con la ArrayList.