AGRUPAR OBJETOS 1
Son objetos que pueden almacenar un número arbitrario de objetos. Para formar colecciones usaremos la clase ArrayList. Para poder utilizar dicha clase habrá que importar el paquete java.util, para ello incluiremos al principio de la definición de clase la sentencia import correspondiente. import java.util.arraylist 2
La clase ArrayList es una clase genérica y además de definir el tipo de colección tenemos que declarar el tipo de objetos que almacenará. private ArrayList<String> notas; Para crear el objeto usaremos la siguiente sentencia: notas = new ArrayList<String>(); Podemos saber el tamaño de una colección llamando a su metodo size. notas.size(); Vamos a ver el proyecto Notebook1 como ejemplo de uso de la clase ArrayList. 3
Es capaz de aumentar su capacidad interna tanto como se requiera. Mantiene cuenta de los objetos almacenados en ella que podemos consultar por medio del método size. Mantiene el orden de los objetos que se agregan, por lo que se pueden recuperar en el mismo orden. 4
El siguiente diagrama de objetos nos muestra el funcionamiento de ArrayList. 5
En java la numeración de los objetos dentro de cualquier colección empieza por el indice 0. 6
Para añadir un objeto a la colección usaremos el método add. String nuevanota = nueva nota ; notas.add(nuevanota); Para eliminar un objeto usaremos el método remove indicando el índice del objeto a eliminar. notas.remove(notaeliminar); Para extraer uno de los elementos gracias al método get inidicando el indice del objeto a extraer. String nota = notas.get(iniceconsultar); 7
Este tipo de ciclo nos va a permitir iterar sobre los distintos elementos de la colección. for (TipoDelElemento : elemento : coleccion){ //cuerpo del ciclo A continuación vemos un ejemplo de este ciclo usado dentro de un método de nuestro proyecto de ejemplo. public void imprimirnotas(){ for (String nota : notas){ System.out.println(nota) 8
Podemos hacer lo mismo con un ciclo while. while (condicion del ciclo){ //cuerpo del ciclo Vemos el mismo método del ejemplo anterior pero esta vez usamos un ciclo while. public void imprimirnotas(){ int indice = 0; while(indice<notas.size()){ System.out.println(notas.get(indice)); indice++; 9
Un iterador es un objeto que proporciona funcionalidad para recorrer todos los elementos de una colección. Proporciona dos métodos para recorrer la colección hasnext y next Iterador<TipoDelElemento> it = micoleccion.iterator(); while (it.hasnext()){ Invocar it.next() para obtener le siguiente elemento. Hacer algo con dicho elemento. 10
Veamos el método de los ejemplos anteriores pero esta vez realizados usando un iterador. public void imprimirnotas(){ Iterator<String> it = notas.iterator(); while (it.hasnext()){ System.out.println(it.next()); 11
La palabra reservada null la utilizamos para indicar que no hay objeto. Cuando una variable de referencia a objetos tiene este valor indica que no tiene ningún objeto asociado. 12
Un array (arreglo) es un tipo especial de colección que puede almacenar un número fijo de elementos. Ventajas que ofrece respecto a las colecciones dinámicas: El acceso a los elementos es más eficiente. Son capaces de almacenar valor de tipos primitivos, mientras que las colecciones dinámicas solo pueden almacenar objetos. 13
Usaremos la siguiente sintaxis para declarar un array: tipodatos[] nombrevariable; Y a continuación vemos la sintaxis para crear un objeto de tipo array: nombrevariable = new tipodatos[tamaño]; El siguiente ejemplo muestra como declarar y crear un array de enteros con capacidad para 24 elementos: private int[] contadoresporhora; contadoresporhora = new int[24]; 14
Al igual que en las colecciones dinámicas los índices de los elementos de un array empiezan por el 0. 15
Para modificar un elemento indicaremos entre[] el índice que queremos modificar. contadoresporhora[5]=24; Para obtener el valor de una posición utilizaremos una sintaxis similar. int contador5 = contadoresporhora[5]; 16
Podemos usar un ciclo for para recorrer nuestros arrays: for (inicializacion; condicion; accion modificadora){ //sentencias a repetir A continuación vemos como usarlo para recorrer el array de contadores por hora. for (int i=0;i<contadoresporhora.length; i++){ int contador = contadoresporhora[i]; System.out.println( Contador + i + : + contador); 17
Podemos hacer lo mismo con un ciclo while. inicializacion; while (condicion del ciclo){ //cuerpo del ciclo //condicion modificadora Vemos el mismo método del ejemplo anterior pero esta vez usamos un ciclo while. int i=0; while(i<contadoresporhora.length){ int contador = contadoresporhora[i]; System.out.println( Contador + i + : + contador); i++; 18
Al igual que en las colecciones dinámicas también podemos utilizar un ciclo for-each for (int valor : contadorseporhora){ System.out.println( : + valor); 19
Con todos los ciclos vistos podemos recorrer un array. La decisión de que ciclo utilizar será un decisión personal del programador, aunque podemos seguir las siguientes indicaciones: Si se necesita recorrer toda la colección: for-each Si se conoce anticipadamente la cantidad de repeticiones necesarias: for Si al comienzo del ciclo no se conoce el número de repeticiones a realizar: while 20
Vamos a ver como se hace uso de los arrays en el proyecto weblog-analyzer. 21