Saltar al contenido

Implementación de ArrayList en Java – Javatpoint

octubre 16, 2021
arraylist implementation in java

ArrayList es una clase de marco de colección Java. Utiliza una matriz dinámica para almacenar los objetos. Es muy similar a Array, pero no tiene límite de tamaño. Podemos agregar o quitar los elementos cuando queramos. Podemos almacenar el elemento duplicado usando ArrayList; Gestiona internamente el orden de inserción.

La clase ArrayList es mucho más flexible que la tradicional Array. Implementa la interfaz de lista para usar todos los métodos de la interfaz de lista. Tiene lugar en el paquete java.util.

La clase ArrayList hereda la clase AbstractList e implementa la interfaz de lista. Se puede acceder a los elementos de la misma de forma aleatoria. No se puede utilizar para tipos primitivos como int, char, etc .; para estos tipos de datos, necesitamos una clase contenedora.

La diferencia entre Array y ArrayList es que Arraylist proporciona una matriz dinámica que se puede expandir cuando sea necesario. En Array, tenemos que especificar el tamaño del Array durante la inicialización, pero no es necesario para ArrayList. De forma predeterminada, toma su tamaño a 10.

La clase ArrayList se puede declarar de la siguiente manera:

ArrayList se puede definir de la siguiente manera:

Considere el siguiente ejemplo:

Producción:

List objects are:  [Sam, Sandy, Joe, Arya, Nik]
After Removing Nik, List Objects are[Sam, Sandy, Joe, Arya]

En el ejemplo anterior, podemos ver cómo podemos agregar o eliminar los objetos de la Lista.

Entendamos cómo funciona internamente:

Implementación de ArrayList en Java

Cómo funciona ArrayList internamente

Cuando inicializamos una ArrayList usando la siguiente sintaxis:

Crea una matriz con la capacidad predeterminada, que es 10. Invoca el constructor predeterminado de la clase ArrayList. Utiliza una instancia de matriz vacía para crear el nuevo objeto, y el compilador de Java ejecuta el siguiente código:

en Java 7 o versión anterior:

en Java 8 o versión posterior:

En el código anterior, podemos ver que se crea internamente una ArrayList vacía con la capacidad predeterminada, que es 10. cuando agregamos el primer elemento, se expandirá a DEFAULT_CAPACITY.

ArrayList usa un objeto [] Matriz para agregar, eliminar y recorrer el elemento.

para las versiones anteriores de Java que Java 8, especifica los objetos de la siguiente manera:

Como podemos ver en la línea de código anterior, de Java 8, la palabra clave privada se ha eliminado para proporcionar acceso a clases anidadas como Itr, ListItr, SubList.

También podemos definir la Lista con la capacidad específica. Cuando proporcionamos una capacidad inicial, el constructor ArrayList se invoca internamente para especificar el Array internamente. Por ejemplo, si definimos una lista de arreglos con la capacidad de 20, tenemos que definir ArrayList de la siguiente manera:

Luego, el compilador de Java ejecutará el siguiente código:

En Java 7 o versiones anteriores:

A partir del código anterior, podemos ver que el tamaño de la matriz será igual a la matriz especificada.

En Java 8 o versiones posteriores:

A partir del código anterior, podemos ver que el tamaño de la matriz será igual a la matriz especificada.

También podemos crear un objeto de ArrayList para una colección específica ejecutando la siguiente línea de código:

El código anterior creará una lista no vacía con los objetos de LinkedList.

Cómo crece dinámicamente ArrayList

Cuando agregamos un nuevo objeto a ArrayList, verificará el tamaño inicial de ArrayList si tiene espacio o no. Si hay suficiente espacio para el nuevo objeto, se agregará simplemente usando el método add (). Si no hay suficiente espacio para agregar un nuevo objeto, aumentará dinámicamente el tamaño de la matriz en esa capacidad.

Considere la siguiente implementación del método add (en Java 7 o posterior):

del código anterior,

  • AsegureCapacityInternal () se utiliza para determinar el tamaño actual de los objetos ocupados y el tamaño máximo de Array.
  • El método de crecimiento se usa para expandir el nuevo tamaño de Array.
  • MinCapacity determina el tamaño actual de los objetos; incluye los nuevos elementos especificados.
  • Arrays.copyOf se utiliza para copiar la matriz especificada.
  • Math.max se usa para devolver el valor máximo o más grande de los argumentos pasados.

Rendimiento de ArrayList

En ArrayList, la operación de adición requiere o (n) tiempo; otras operaciones se ejecutan en tiempo lineal.

Las tareas size, isEmpty, get, set, iterator y listIterator se ejecutan en un tiempo constante de O (1).

Resumen

  • ArrayList es una implementación de matriz personalizable; podemos agregar objetos dinámicamente en la Lista.
  • ArrayList usa una matriz de clase Object para almacenar los objetos.
  • De forma predeterminada, ArrayList crea una matriz de tamaño 10.
  • Al inicializar Array, podemos especificar el tamaño de Array.
  • Al agregar o eliminar elementos, el espacio en la matriz se ajustará automáticamente.

close