Herramientas de usuario

Herramientas del sitio


bloque3:estructurasdatos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque3:estructurasdatos [07/03/2018 19:57] – [Bucle for each] Fernando Valdeónbloque3:estructurasdatos [16/09/2024 20:53] (actual) – editor externo 127.0.0.1
Línea 11: Línea 11:
 La clase ArrayList representa una de las estructura de datos más usadas en Java. 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.+Consiste en un array dinámico por lo 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 [[https://docs.oracle.com/javase/8/docs/api/java/util/List.html|List]] y permite alacenar valores ''null''. Implementa los métodos de la interfaz [[https://docs.oracle.com/javase/8/docs/api/java/util/List.html|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.+Solo permite guardar objetos, por lo que al guardar un tipo primitivo, se convertirá automáticamente a su [[bloque3:wrappers|objeto envoltorio]].
  
 ==== Instanciar un ArrayList ==== ==== Instanciar un ArrayList ====
Línea 75: Línea 75:
 ===== Recorrer una lista ===== ===== Recorrer una lista =====
 Existen 3 formas principales para recorrer una lista: Existen 3 formas principales para recorrer una lista:
-  * **bucle for**: se recorre como siempre, llamando al método ''size()'' para comprobar su tamaño. Puedo borrar elementos o añadirlos a la lista mientras la recorro. +  * **bucle for**: se recorre como siempre, llamando al método ''size()'' para comprobar su tamaño. Puedo añadir elementos a la lista mientras la recorro, pero se debe tener cuidado al borrar
-  * **con un Iterator**: la forma más recomendable si debo borrar elementos mientras recorro la lista.+  * **con ''Iterator''**: la forma más recomendable __si debo borrar elementos__ mientras recorro la lista.
   * **bucle for each**: perfecto para recorrer la lista sin modificarla.   * **bucle for each**: perfecto para recorrer la lista sin modificarla.
  
Línea 90: Línea 90:
 //Añado 4 elementos seguidos al ArrayList //Añado 4 elementos seguidos al ArrayList
  
-listaNombres.add(Jose); +listaNombres.add("Jose"); 
-listaNombres.add(Marta); +listaNombres.add("Marta"); 
-listaNombres.add(Juan); +listaNombres.add("Juan"); 
-listaNombres.add(Laura);+listaNombres.add("Laura");
  
 //Recorro el array y muestro los elementos //Recorro el array y muestro los elementos
-for (int i = 0; i < listaNombre.size(); i++){+for (int i = 0; i < listaNombres.size(); i++){
    System.out.println(listaNombres.get(i));     System.out.println(listaNombres.get(i)); 
 +}
 +
 +//Cuidado al borrar
 +for (int i = 0; i < listaNombres.size(); i++){
 +   if(listaNombres.get(i).equals("Juan"){
 +      listaNombres.remove(i);
 +      //La i se incrementa, pero hay un elemento menos en la lista
 +      //"Laura" pasa a ser el elemento en la posición i actual
 +      //Y me la saltaré porque la i se incrementa
 +   
 } }
 </code> </code>
  
 +Como cada iteración del bucle se comprueba llamando al método ''size()'', puedo añadir o eliminar en tiempo real, ya que size() calculará el tamaño actual en cada iteración. 
 +
 +Ojo, si borro el elemento en la posición ''i'', ya que ahora la posición ''i'' representará al siguiente elemento.
 ==== Interface Iterator ==== ==== Interface Iterator ====
 Todas las listas implementan la interface  Todas las listas implementan la interface 
Línea 124: Línea 137:
    String elemento = iterador.next(); //Accedo a cada elemento    String elemento = iterador.next(); //Accedo a cada elemento
    System.out.println(elemento); //Muestro por pantalla    System.out.println(elemento); //Muestro por pantalla
-   if(elemento.equals("Elemento3"){+   if(elemento.equals("Elemento 3"){
        iterador.remove(); //Borro el elemento actual        iterador.remove(); //Borro el elemento actual
    }    }
Línea 137: Línea 150:
   * Tipo de los datos de la lista   * Tipo de los datos de la lista
   * Variable con la que accedo a cada dato de la lista   * Variable con la que accedo a cada dato de la lista
-  * Objeto lista+  * Objeto lista (Cualquier tipo de Collection o Array)
  
 <code java> <code java>
Línea 217: Línea 230:
  
 ==== Conjuntos (Sets) ==== ==== Conjuntos (Sets) ====
-Los conjuntos en Java, al igual que los conjuntos en matemáticas, no permiten contener elementos duplicados. +Los conjuntos en Java, al igual que los conjuntos en matemáticas, no permiten contener elementos duplicados. Implementan la interface ''Set'':
  
   * ''HashSet'' : Almacena los elementos en una tabla //hash// sin mantener ningún orden.   * ''HashSet'' : Almacena los elementos en una tabla //hash// sin mantener ningún orden.
Línea 225: Línea 238:
  
 ==== Mapas ==== ==== Mapas ====
-Son colecciones que contienen asociaciones ''clave'':''valor''.+Son colecciones que contienen asociaciones ''clave'':''valor''Implementar la interface ''Map''
 Esto quiere decir que al añadir un elemento a la colección debemos añadir una clave para identificarlo. Por ejemplo: ''key'' -> dni, ''value'' -> una persona Esto quiere decir que al añadir un elemento a la colección debemos añadir una clave para identificarlo. Por ejemplo: ''key'' -> dni, ''value'' -> una persona
  
bloque3/estructurasdatos.1520452644.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)