Está en la página 1de 8
ArrayList en Java La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los Arrays, con la ventaja de que el numero de elementos que almacena, lo hace de forma dindmica, es decir, que no es necesario declarar su tamafio como pasa con los Arrays. Para todos aquellos que hayan estudiado alguna vez las estructuras de datos de las Pilas, Colas, Listas, Arboles (AVL, B, B+, B*) etc. hay que decir que los ArrayList ‘tiran al carajo” toda la teoria que hay detrés de esas estructuras de datos ya que los ArrayList nos permiten afiadir, eliminar y modificar elementos (que pueden ser objetos o elementos atomicos) de forma trasparente para el programador. Antes de pasar a explicar el manejo de los ArrayList, dejo por fuera de este documento en la ‘pagina’, un enlace a JavaDoc, donde podran profundizar atin mas sobre este tema, Los principales métodos para trabajar con los ArrayList son los siguientes: un ArrayList de to (float, Boo. de cualquier otr Factura, Camion ArrayList nomb: eBrrayList = new Arraybist()+ // Anadimos 10 Elementos en el ArrayList for (int isL; icsloy i++) { nombrearraybist.add("Elemento "+i)+ // Aiacimos un 2 jevo elemento al ArrayList en la posicion 2 nombreArrayList.add(2, ento 3"); // Declaramos 21 Iterador © imprimimos los Elementos del ArrayList Iterator nombreltera mbreArrayLis while (nombreIterator -hasNext ()) { String elemento = nombi t.pyint(elementot" / ")s Ejecutando esta cédigo obtenemos por pantalla lo siguiente: Elemento 1 / Elemento 2 / Elemento 3 / Elemento 3 / Elemento 4 / Eleme nto 5 / Elemento 6 / Elemento 7 / Elemento 8 / Elemento 9 / Elemento 1 os Como se observa en el resultado tenemos repetido el elemento “Elemento 3" dos veces y esto lo hemos puesto a proposito para mostrar el siguiente ejemplo. Ahora para seguir trabajando con los ArrayList, lo que vamos ha hacer es mostrar el numero de elementos que tiene el ArrayList y después eliminaremos el primer elemento del ArrayList y los elementos del ArrayList que sean iguales a “Elemento 3", que por eso lo hemos puesto repetido. El “Elemento 3" lo eliminaremos con el metodo ‘“remove()’ del iterador. A continuacién mostramos el cédigo que realiza lo descrito: // Recordar que previamente ya hemos declazado ©1 ArrayList y el Itera toz de la siguiente forma // AzrayList nombreArraylist ~ new ArzayList nombrelterater = nombrearrayList.iterstor(); // Obtenenos 21 numero de elementos del arraynist int numBlem: ize) s System.out.printla("anEl ArrayList tiene "#numElementos+" elementos"); // Eliminamos el primer elemento del ArrayList, es decir el que ocupa Ja posicisn "0" System.out.printin("a.., Eliminamos #1 primer elemento del ArrayList ( “tnombreArrayList .get (0) +"). nombrearrayList. remove (0) Jf Bliminamos los elementos de ArrayList gue sean iguales 2 "Elemento Sn System.out-printin("n.., Eliminamos los elementos de ArrayList que sea niguales a "Elemento 3" ...")7 nombrelterator = nombreArrayList. ite: ator () + while (nombreIterator hasNext ()) { String elemento = nombrelterator.next (); elemento.equals ("Elemento 3")) nombreTterator.renove() /é @liminamos ¢1 Elem que hemos obtenido del Iterator ) // Imprimimos el ArrayList despues de eliminar los elementos iguales a “Elemento 3" System.out.printla("aImprimimos los elementos del ArrayList trae reali zar las eliminaciones: "); nombreIterator = nombreArrayList iterator ()+ while (nombreIterator -hasNext ()) { String elemento = nombreIterator-next ()i System.out.print (elemento+" / // Mostramos el numero de elementos que tiene el ArrayList tras las el pumElementos = norbreArrayList.size()s System.out.printin("nNumero de elementos del ArrayList tras las elimin +numELementos) + Como salida a este o6digo tenemos lo siguiente: El ArrayList tiene 11 elemen ; Eliminamos el primer elemento del ArrayList (Elemento 1)... Eliminamos los elementos emento ArrayList que sean iguales a Imprimimoe los elementos del ArrayList tras realizar las eliminaciones ‘lemento 2 / Elemento 4 / Elemento 5 / Elemento 6 / Elemento 7 / Eleme nto 8 / Elemento 9 / Elemento 10 / Numero de elementos del ArrayList tras las eliminacione! Si os fijais, hemos eliminado 3 elementos del ArrayList de dos formas distintas, preguntando por la posicién que ocupa un elemento en el ArrayList y preguntando Por el contenido de algun elemento del ArrayList. Como se observa es muy importante saber manejar los Iteradores ya que con ellos podemos tratar los elementos del ArrayList. Bueno todo lo que hemos visto esta muy bien, pero por lo general los ArrayList se suelen utilizar con objetos mas que con estructuras atémicas de datos, ya que los ArrayList en Java son estructuras muy potentes y sencillas de manejar Ahora vamos a poner un ejemplo de la utilizacién de ArrayList con Objetos. Para ello nos vamos ha crear una clase llamada “Factura” que utilizaremos para crearnos objetos de esa clase que almacenaremos en el ArrayList. En primer lugar mostramos la clase “Factura” que es la siguiente: public class Factura { private Cliente cli; private float total; private float iva; private float subtotal; public Cliente getCli() { return cli y public void setCli(cliente cli) { this.cli = cli; ? public float getTotal() { return total; t public void setTotal(float total) { this.total = total; } public float getIva() { return iva; } public void setIva(float iva) { this.iva = iva; y public float getSubtotal() { return subtotal; ? public void setSubtotal(float subtotal) { this.subtotal = subtotal; t @override public String toString() { return “Factura [tota + total +", ivi + iva+ + subtotal + Lo que vamos ha hacer ahora en este ejemplo, es leer desde un archivo de texto, una serie de facturas que guardaremos en un ArrayList de objetos "Factura’. Al utilizar el ArrayList, no nos importa el numero de facturas que haya en el archivo de texto ya que los ArrayList como vimos al principio son dinamicos. Para este caso les adelante que hay 50 facturas en el archivo, pero nos daria igual cuantos podria haber. A.continuacién se muestra el cédigo de la lectura de las facturas y como los almacenamos en un ArrayList. Por curiosidad, un partido de futbol esta guardado en el fichero con la siguiente estructura / Nos creamos un ArrayList de objetos de 1a Clase "Factura” System.out.println("..., Nos creamos un ArrayList de cbjetos de la Clas e" Factura" ...")? ArrayList¢ Factura > facturas = new ArrayList< Factura >(); // Instanciamos 21 Archivo dond= estan los datos File archivo - new File (nombreArchivo); Scanner @ = nully try { // ieemos €1 contenide del archivo system.cut.println("... Leemos el contenido del Archivo ... new Scanner (archivo) + J/ Obtengo les datos de las facturas del archivo while (s.hasNextbine()) { String linea = s.nexthine(); // Obtengo una linea del archivo (una factura) String [] cortarString = linea-split (" // Obtengo os datos de 1a factura Factura £ = new Factura (); // Creo un objeto de la clase "Factura" // Pongo los atributos al objeto “f" f.setCli(cortarstring[0]); £.setTotal(cortarString[1])s f.setiva (cortarString(2])+ £. setSubtotal (cortarstring (31) // Abadinos e1 objeto "f" 31 arreylist facturas.add(£)+ catch (Exception e) { e.printStackTrace()+ finally{ try { if (= t= mull) s.clese() ) catch (Exception 22) { 2Q.print: ckTrace (); System.out.printla(".., Guardados "+facturas.size()+" facturas..."); Con este cédigo que mostramos tambien se puede ver de que forma se puede leer Un archivo de texto y tratar los datos. Una vez ejecutado este codigo tenemos guar dado en el ArrayList ‘facturas’, 50 facturas. Ahora recorremos el ArrayList con un It erator y mostramos por pantalla todos los resultados de facturas. Esto lo hacemos i gual que antes, con el Iterator: Iterator itrFactura = facturas.iterator(); while (itrFactura.hasNext ()) ( Facture f = itrFactura.next(); System.out.printin(£.toString())+ Con esto ya hemos visto como manejar los ArrayList y hemos visto los métodos mas importantes para ello, Con todo esto ya esta casi todo contado sobre los ArrayList en Java. Ahora solo queda trabajar con ello.

También podría gustarte