Arrays vs Arraylists
Las matrices son la estructura de datos más utilizada para almacenar una colección de elementos. La mayoría de los lenguajes de programación proporcionan métodos para declarar fácilmente matrices y acceder a elementos en las matrices. Un arraylist puede verse como una matriz dinámica, que puede crecer en tamaño. Debido a esta razón, el programador no necesita saber el tamaño del arrailista cuando lo está definiendo.
Que son matrices?
En la figura 1, se muestra un fragmento de código que normalmente se utiliza para declarar y asignar valores a una matriz. La figura 2 muestra cómo se vería una matriz en la memoria.
valores de int [5]; valores [0] = 100; valores [1] = 101; valores [2] = 102; valores [3] = 103; valores [4] = 104; |
Figura 1: Código para declarar y asignar valores a una matriz
100 | 101 | 102 | 103 | 104 |
Índice: 0 | 1 | 2 | 3 | 4 |
Figura 2: Array almacenado en la memoria
El código anterior define una matriz que puede almacenar 5 enteros y se accede a ellos mediante los índices 0 a 4. Una propiedad importante de una matriz es que, la matriz completa se asigna como un bloque único de memoria y cada elemento tiene su propio espacio en la matriz. . Una vez que se define una matriz, su tamaño es fijo. Entonces, si no está seguro sobre el tamaño de la matriz en el momento de la compilación, tendría que definir una matriz lo suficientemente grande como para estar en el lado seguro. Pero, la mayoría de las veces, en realidad vamos a utilizar menos elementos de los que hemos asignado. Así que una cantidad considerable de memoria se desperdicia realmente. Por otro lado, si la "matriz lo suficientemente grande" no es realmente lo suficientemente grande, el programa se bloquearía.
¿Qué son los arrailistas??
Un arraylist puede verse como una matriz dinámica, que puede crecer en tamaño. Por lo tanto, los arrailistas son ideales para ser usados en situaciones en las que no se conoce el tamaño de los elementos requeridos al momento de la declaración. En Java, los arrailistas solo pueden contener objetos, no pueden albergar tipos primitivos directamente (puede colocar los tipos primitivos dentro de un objeto o usar las clases de envoltorio de los tipos primitivos). Generalmente a los arrailistas se les proporcionan métodos para realizar la inserción, eliminación y búsqueda. La complejidad de tiempo para acceder a un elemento es o (1), mientras que la inserción y eliminación tiene una complejidad de tiempo de o (n). En Java, los arrailistas pueden recorrerse utilizando bucles foreach, iteradores o simplemente usando los índices.
¿Cuál es la diferencia entre Arrays y Arraylists
Aunque las matrices y los arrailistas son similares en el sentido de que ambos se utilizan para almacenar colecciones de elementos, difieren en la forma en que se definen. El tamaño de la matriz se debe proporcionar cuando se define una matriz, pero puede definir una lista de arrays sin saber el tamaño real. Puede agregar elementos a un arraylist una vez que se haya definido y esto no es posible con los arrays. Pero en Java, los arrailistas no pueden contener tipos primitivos, pero los arreglos pueden usarse para mantener tipos primitivos. Pero si necesita una estructura de datos que pueda variar su tamaño, Arraylist sería la mejor opción.