Curso de Java. Estructuras de datos: ArrayList y LinkedList

Curso de Java. Estructuras de datos: ArrayList y LinkedList

Adrián Crespo

Continuamos con el curso de Java de RedesZone.net.

En la entrega anterior, dimos por finalizada la entrada y salida de ficheros, aunque aún queda un programa completito que os pondremos más adelante (estamos terminándolo), por lo que, a partir de ahora, vamos a continuar analizando las estructuras de datos que existen en Java y como se tratan los datos en cada unas de ellas.

En la entrega de hoy, hablaremos sobre los ArrayList y LinkedList. Hablaremos sobre sus métodos y cuales son sus diferencias hablando en cuanto a eficiencia en el manejo de los datos.

Vamos a empezar con una breve introducción de cada uno de ellos.

Ambas implementan una interfaz genérica, la interfaz List

ArrayList: lista implementada con un array

  •  Acceso posicional eficiente
  •  Inserción y extracción costosas menos en la última posición que es instantánea
  •  Cuando se supera el tamaño del array, se crea uno nuevo más grande y se copian en él los elementos del antiguo

LinkedList: lista doblemente enlazada

  • Acceso posicional costoso
  • Inserción y extracción costosas
  • Menos en la primera y última posición que es inmediato
  • Tamaño ilimitado

Uso de ArrayList y LinkedList

Debe importarse el paquete java.util:

[java]import java.util.*;[/java]

Son clases genéricas

El constructor crea una lista vacía

[java]LinkedList<MiClase> lista=new LinkedList<MiClase> ();[/java]

Con las colecciones se puede usar el lazo for-each

[java]for(MiClase elem: lista) {

… utiliza elem …

}[/java]

En las operaciones que se muestran en las transparencias siguientes la clase E es el parámetro genérico.

  •  Operaciones de modificación de la interfaz List

Las operaciones que usan index pueden lanzar IndexOutOfBoundsException si el valor de index no es válido.

Los métodos contains, indexOf y lastIndexOf  utilizan el método equals para localizar el objeto.

  • Operaciones específicas de LinkedList

getFirst(), getLast(), removeFirst() y removeLast() lanzan NoSuchElementException si la lista está vacía.

Como habéis podido comprobar, esta entrega ha sido muy teórica. En la siguiente entrega os propondremos un ejercicio para practicar los ArrayList, no sin antes haberos dado un ejemplo de cómo se pueden utilizar y cuál es su funcionamiento, por lo que durante las dos próximas entregas, continuaremos con estas estructuras de datos.

4 Comentarios