Herramientas de usuario

Herramientas del sitio


bloque4:estructurasdatos

¡Esta es una revisión vieja del documento!


Estructuras de datos dinámicas

Hasta ahora conocemos los arrays, como la estructura de datos que me permite almacenar una serie de datos del mismo tipo.

Como hemos visto los arrays tienen un tamaño fíjo, que se indica en el momento de su creación.

Existen otras estructuras de datos, que funcionan de forma similar a los arrays, pero aumentan su capacidad o la disminuyen dependiendo de la necesidad. Todo esto en tiempo de ejecución.

Las siguientes clases implementan la interface List por lo que tienen método comunes.

Clase ArrayList

La clase ArrayList representa una de las estructura de datos más usadas en Java.

Consiste en un array dinámico al que no hay que definirle un tamaño. Cuando añadimos elementos amplia su tamaño, y cuando los borramos lo reduce. Implementa los métodos de la interfaz List y permite alacenar valores null.

Solo permite guardar objetos, por lo que al guardar un tipo primitivo, se convertirá automáticamente a su objeto envoltorio.

Instanciar un ArrayList

Las colecciones, como en este caso ArrayList, son tipo de datos raw. Esto quiere decir que debemos facilitarle al compilador el tipo de datos que almacenará: <tipo_datos>.

ArrayList<Integer> listaEnteros = new ArrayList<Integer>();
 
ArrayList<String> listaCadenas = new ArrayList<String>();
 
ArrayList<Persona> listaPersonas = new ArrayList<Persona>();

Métodos de ArrayList

ArrayList<String> lista = new ArrayList<String>();
 
//Añade el elemento al ArrayList
lista.add("Elemento");
 
//Añade el elemento al ArrayList en la posición 'n'
lista.add(n, "Elemento 2");
 
//Devuelve el número de elementos del ArrayList
lista.size();
 
//Devuelve el elemento en la posición 2 del ArrayList
lista.get(2);
 
//Comprueba si existe el elemento ('Elemento') 
lista.contains("Elemento");
 
//Devuelve la posición de la primera ocurrencia ('Elemento')  
lista.indexOf("Elemento");
 
//Devuelve la posición de la última ocurrencia ('Elemento')   
lista.lastIndexOf("Elemento");
 
//Borra el elemento de la posición '5'   
lista.remove(5); 
 
Borra la primera ocurrencia del "Elemento" 
lista.remove("Elemento");
 
//Borra todos los elementos de ArrayList   
lista.clear();
 
//Devuelve True si el ArrayList está vacío.
lista.isEmpty();  
 
//Copiar un ArrayList 
ArrayList arrayListCopia = (ArrayList) lista.clone();  
 
//Pasa el ArrayList a un Array 
String[] array = lista.toArray();

Recorrer una lista

Existen 3 formas principales para recorrer una lista

Bucle for

Podemos recorrer un ArrayList del mismo modo que lo hacemos con un array estático. Para saber su tamaño usamos el método size(). Al igual que los arrays, la primera posición de un ArrayList es la posición 0.

ArrayList<String> listaNombres = new ArrayList<String>();
 
//Añado 4 elementos seguidos al ArrayList
 
listaNombres.add(“Jose”);
listaNombres.add(“Marta”);
listaNombres.add(“Juan”);
listaNombres.add(“Laura”);
 
//Recorro el array y muestro los elementos
for (int i = 0; i < listaNombre.size(); i++){
   System.out.println(listaNombres.get(i)); 
}

Interface Iterator

Bucle for each

Conocido como foreach o for mejorado, es úna versión del bucle for, enfocada en recorrer listas, pero sin aumentar o disminuir su tamaño.

Clase Stack

Clase LinkedList

bloque4/estructurasdatos.1520169312.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)