Esta es una colección ordenada de objetos (secuencia) en la que cada elemento tiene una posición.Por lo tanto, el usuario tiene control sobre cada uno de sus elementos a través de un índice entero (index). Además, esta interfaz define métodos para consultar o establecer el elemento en una posición particular.
Una colección de este tipo se asemeja a un array cuyo tamaño cambia según sea necesario para acomodar la cantidad de elementos que contiene. A diferencia de las Interfaces Set, esta permite que se tengan elementos duplicados.
Se pueden implementar objetos que empleen los métodos de esta interfaz a través de las clases:
- ArrayList
- LinkedList
- CopyOnWriteArrayList
- Vector
- Stack
Clase ArrayList
ArrayList es una estructura de datos similar a los arrays, pero mientras en los arrays se debe definir la longitud o tamaño de este, en los ArrayList no es necesario, esto genera una simplicidad al programador para agregar, recorrer, modificar o eliminar sus elementos.Se puede crear una colección de tipo ArrayList mediante la interfaz List o directamente como una clase.
package test;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
/* Creando la estructura de datos*/
ArrayList<string> lista = new ArrayList<>();
/*Agregando elementos*/
lista.add("Juan");
lista.add("Luis");
lista.add("Carlos");
lista.add("Ana");
lista.add("Alberto");
/*Listando los elementos*/
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
/* Tamaño de la estructura "size()" */
System.out.println("Tamaño: " + lista.size());
System.out.println("----------------");
/* Modificando un valor */
System.out.println("Valor inicial: " + lista.get(2));
lista.set(2, "Reemplazado"); //Indicamos el index
System.out.println("Valor modificado: " + lista.get(2));
System.out.println("----------------");
/* Eliminando un registro por contenido o index*/
lista.remove("Ana"); // lista.remove(3);
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
System.out.println("----------------");
/* Agregar al inicio o al final */
lista.add(0,"Ada");
lista.add(lista.size(),"Veronica");
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
System.out.println("----------------");
}
}
Resultado:
Nombre: Juan Nombre: Luis Nombre: Carlos Nombre: Ana Nombre: Alberto Tamaño: 5 ---------------- Valor inicial: Carlos Valor modificado: Reemplazado ---------------- Nombre: Juan Nombre: Luis Nombre: Reemplazado Nombre: Alberto ---------------- Nombre: Ada Nombre: Juan Nombre: Luis Nombre: Reemplazado Nombre: Alberto Nombre: Veronica ----------------
Clase LinkedList
LinkedList es una estructura de datos lineal que se asemeja a los arrays. la gran diferencia es que los elementos dentro de esta clase no están almacenados de forma contigua como en los arrays. sino que se vinculan entre sí mediante punteros. Cada elemento de LinkedList tiene la referencia (dirección / puntero) al siguiente elemento de LinkedList.Se puede crear una colección de tipo LinkedList mediante las interfaces List o Deque, o directamente como una clase.
package test;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
/* Creando la estructura de datos*/
LinkedList<string> lista = new LinkedList<>();
/*Agregando elementos*/
lista.add("Juan");
lista.add("Luis");
lista.add("Carlos");
lista.add("Ana");
lista.add("Alberto");
/*Listando los elementos*/
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
/* Tamaño de la estructura "size()" */
System.out.println("Tamaño: " + lista.size());
System.out.println("----------------");
/* Modificando un valor */
System.out.println("Valor inicial: " + lista.get(2));
lista.set(2, "Reemplazado"); //Indicamos el index
System.out.println("Valor modificado: " + lista.get(2));
System.out.println("----------------");
/* Eliminando un registro por contenido o index*/
lista.remove("Ana"); // lista.remove(3);
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
System.out.println("----------------");
/* Agregar al inicio o al final */
lista.addFirst("Ada");
lista.addLast("Veronica");
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
System.out.println("----------------");
/* Capturar un valor y eliminarlo */
String primero = lista.pollFirst();
System.out.println("Nombre eliminado: " + primero);
lista.forEach((nom) -> {
System.out.println("Nombre: " + nom);
});
System.out.println("----------------");
}
}
Resultado:
Nombre: Juan Nombre: Luis Nombre: Carlos Nombre: Ana Nombre: Alberto Tamaño: 5 ---------------- Valor inicial: Carlos Valor modificado: Reemplazado ---------------- Nombre: Juan Nombre: Luis Nombre: Reemplazado Nombre: Alberto ---------------- Nombre: Ada Nombre: Juan Nombre: Luis Nombre: Reemplazado Nombre: Alberto Nombre: Veronica ---------------- Nombre eliminado: Ada Nombre: Juan Nombre: Luis Nombre: Reemplazado Nombre: Alberto Nombre: Veronica ----------------
Comparación entre ArrayList y LinkedList
ArrayList | LinkedList |
---|---|
Internamente emplea una matriz dinámica para almacenar los elementos. | Internamente utiliza una lista doblemente vinculada para almacenar los elementos. |
La manipulación es lenta, porque internamente usa una matriz. Si se elimina algún elemento de la matriz, todos los bits se desplazan en la memoria. | La manipulación es rápida, porque utiliza una lista doblemente vinculada, por lo que no se requiere ningún cambio en la memoria. |
Puede actuar como una lista solo porque implementa solo a la interfaz List. | Puede actuar como una lista y una cola, ya que implementa las interfaces List y Deque. |
Es la mejor opción para almacenar y acceder a datos. | Es la mejor opción para manipular datos. |
No hay comentarios:
Publicar un comentario