Analicemos el concepto de arrays y ArrayList brevemente en el encabezado para incorporar la comprensión en los programas de Java y luego aterrizar en las diferencias concluyentes entre ellos. Como todos sabemos, las arrays son estructuras de datos lineales que brindan funcionalidad para agregar elementos de manera continua en el espacio de direcciones de la memoria, mientras que ArrayList es una clase que pertenece al marco Collection. Al ser un buen programador, uno ya sabe usar ArrayList sobre arreglos a pesar de conocer las diferencias entre estos dos. Ahora, avanzando, incluso con ArrayList, viene una funcionalidad para pasar el tipo de tipo de datos de los elementos que se supone que deben almacenarse en ArrayList, ya sea un objeto, string, entero, doble, flotante, etc.
Nota: Como nota al margen, ArrayList en Java puede verse como un vector en C++ .
Métodos de creación de arrays
En Java, las siguientes son dos formas diferentes de crear una array.
- Arreglos simples de tamaño fijo
- Arrays de tamaño dinámico
int arr[] = new int[10]
Sintaxis: declarar una array estática
Se puede definir además por dos tipos:
- Tipo 1 : declaración e inicialización al mismo tiempo
- Tipo 2: declarar que inicializar elementos más tarde.
Tipo 1
Type array_name [array_size] ; Type array_name = { Element1, Element2, Element3, Element4,...., ElementN } ; // It is preferable if we have very limited array elements
Tipo 2
int arr [100] ; // This does means we are declaring a memory block named 'arr' // which is containing continuous 100 block associated in it
Nota: arr(0) devuelve el primer elemento de la array, por lo que significa que si tratamos de imprimir arr(0), obtendremos el Elemento1. Es una declaración muy importante y se deja sin revelar cuando se trata de una comprensión profunda del almacenamiento de memoria en arreglos.
Ahora detengámonos en el siguiente concepto de ArrayList que es el siguiente
Sintaxis: declaración de una lista de arreglos
Arraylist<Type> al = new ArrayList<Type> ; // Here Type is the type of elements in ArrayList to be created
Nota: ArrayList en Java (equivalente a vector en C++) con tamaño dinámico. Se puede encoger o expandir según el tamaño. ArrayList es parte del marco de la colección y está presente en el paquete java.util .
Ahora permítanos ilustrar ejemplos con la ayuda de las diferencias entre Array y ArrayList
Base 1: una array es una funcionalidad básica proporcionada por Java. ArrayList es parte del marco de colección en Java. Por lo tanto, se accede a los miembros de la array usando [], mientras que ArrayList tiene un conjunto de métodos para acceder a los elementos y modificarlos.
Ejemplo:
Java
// Java program to demonstrate differences between // Array and ArrayList // Importing required classes import java.util.ArrayList; import java.util.Arrays; // Main class class GFG { // Main driver method public static void main(String args[]) { // Input array int[] arr = new int[2]; arr[0] = 1; arr[1] = 2; // Printing first element of array System.out.println(arr[0]); // ArrayList // Creating an arrayList with initial capacity // say bi it 2 ArrayList<Integer> arrL = new ArrayList<Integer>(2); // Adding elements to ArrayList // using add() method arrL.add(1); arrL.add(2); // Printing alongside accessing // elements of ArrayList System.out.println(arrL.get(0)); } }
1 1
Base 2: la array es una estructura de datos de tamaño fijo, mientras que ArrayList no lo es. No es necesario mencionar el tamaño de ArrayList al crear su objeto. Incluso si especificamos alguna capacidad inicial, podemos agregar más elementos.
Ejemplo:
Java
// Java program to demonstrate differences between // Array and ArrayList // Importing required classes import java.util.ArrayList; import java.util.Arrays; // Main class class GFG { // Main driver method public static void main(String args[]) { // Normal Array // Need to specify the size for array int[] arr = new int[3]; arr[0] = 1; arr[1] = 2; arr[2] = 3; // We cannot add more elements to array arr[] // ArrayList // Need not to specify size // Declaring an Arraylist of Integer type ArrayList<Integer> arrL = new ArrayList<Integer>(); // Adding elements to ArrayList object arrL.add(1); arrL.add(2); arrL.add(3); arrL.add(4); // We can add more elements to arrL // Print and display Arraylist elements System.out.println(arrL); // Print and display array elements System.out.println(Arrays.toString(arr)); } }
[1, 2, 3, 4] [1, 2, 3]
Base 3: una array puede contener tanto tipos de datos primitivos como objetos de una clase según la definición de la array. Sin embargo, ArrayList solo admite entradas de objetos, no los tipos de datos primitivos.
Nota: Cuando hacemos arraylist.add(1), convierte el tipo de datos int primitivo en un objeto Integer, como se ilustra en el siguiente ejemplo.
Ejemplo:
Java
import java.util.ArrayList; class Test { public static void main(String args[]) { // allowed int[] array = new int[3]; // allowed, however, need to be initialized Test[] array1 = new Test[3]; // not allowed (Uncommenting below line causes // compiler error) // ArrayList<char> arrL = new ArrayList<char>(); // Allowed ArrayList<Integer> arrL1 = new ArrayList<>(); ArrayList<String> arrL2 = new ArrayList<>(); ArrayList<Object> arrL3 = new ArrayList<>(); System.out.println("Successfully compiled and executed"); } }
Successfully compiled and executed
Base 4: dado que ArrayList no se puede crear para tipos de datos primitivos, los miembros de ArrayList siempre son referencias a objetos en diferentes ubicaciones de memoria (consulte esto para obtener más detalles). Por lo tanto, en ArrayList, los objetos reales nunca se almacenan en ubicaciones contiguas. Las referencias de los objetos reales se almacenan en ubicaciones contiguas.
Por otro lado, en el arreglo, depende si el arreglo es de tipo primitivo o de tipo objeto. En el caso de los tipos primitivos, los valores reales son ubicaciones contiguas, pero en el caso de los objetos, la asignación es similar a ArrayList. Java ArrayList admite muchas operaciones adicionales como indexOf(), remove() , etc. Arrays no admite estas funciones.
Hemos implementado y visto las diferencias entre ellos como se perciben a partir de los resultados. Ahora terminemos el artículo trazando diferencias concluyentes en un formato tabular como se muestra a continuación de la siguiente manera:
Base | Formación | Lista de arreglo |
---|---|---|
dimensionalidad | Puede ser unidimensional o multidimensional | Solo puede ser unidimensional. |
Elementos transversales | for y for each generalmente se usa para iterar sobre arrays | Aquí el iterador se usa para atravesar riverArrayList |
Longitud | La palabra clave length puede dar el tamaño total de la array. | El método size() se utiliza para calcular el tamaño de ArrayList. |
Tamaño | Es estático y de longitud fija. | Es dinámico y se puede aumentar o disminuir de tamaño cuando sea necesario. |
Velocidad | Es mas rapido como arriba lo vemos de tamaño fijo | Es relativamente más lento debido a su naturaleza dinámica. |
Almacenamiento primitivo de tipos de datos | Los tipos de datos primitivos se pueden almacenar directamente en objetos improbables | Los tipos de datos primitivos no se agregan directamente a arrays improbables, se agregan indirectamente con la ayuda de autoboxing y unboxing |
Genéricos | No se pueden agregar aquí, por lo tanto, escriba inseguro | Se pueden agregar aquí, por lo tanto, hacer que ArrayList sea seguro para el tipo. |
Adición de elementos | El operador de asignación solo sirve para el propósito. | Aquí se utiliza un método especial conocido como método add() |
Este artículo es una contribución de Pranjal Mathur . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA