Está en la página 1de 20

Colecciones

Nadjet Bouayad-Agha Programacin 2007

ArrayList
Un ArrayList es un array dinmico. No tiene restricciones de capacidad. Su tamao se ajusta de forma dinmica. Constructor por defecto: newArrayList(). Inicialmente, la capacidad de un ArrayList creado as es 0. Los elementos dentro de un ArrayList son Objetos. No pueden ser de tipo bsico, pero pueden ser de cualquier tipo de objeto. La clase ArrayList forma parte del paquete java.util Para poner un elemento dentro de esta estructura, usamos el mtodo add y para recoger un elemento usamos el mtodo get. Ejemplos: ArrayListExample.java

import java.util.*; public class ArrayListExample1 { public static void main(String[ ] args) { ArrayList thisArrayList = new ArrayList(); thisArrayList.add("hello"); thisArrayList.add(","); thisArrayList.add("are"); thisArrayList.add("you"); thisArrayList.add("?"); for (int i=0;i<thisArrayList.size();i++) System.out.print(thisArrayList.get(i)+" ");

} }

Mtodos de ArrayList
http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html

int size() -- El tamao actual (puede ser 0) void add(obj) -- Aade un objeto al final del ArrayList, incrementando su tamao de 1. obj es un objeto. Object get(N) -- Devuelve el elemento almacenado a la posicin N en el ArrayList. N tiene que ser un entero entre 0 y size()-1. En ArrrayListInteger.java, se convierte el objeto devuelto por get() a un Integer con casting. En ArrayListString.java, se convierte el objeto devuelto por get() a un String llamando al mtodo toString() de Object.

import java.util.ArrayList; public class ArrayListInteger { public static void main(String[] args) { ArrayList numeros = new ArrayList(); Integer num1 = new Integer(10); Integer num2 = new Integer(20); Integer num3 = new Integer(30); Integer num4 = new Integer(40); numeros.add(num1); numeros.add(num2); numeros.add(num3); numeros.add(num4); int suma=0; for (int i=0;i<numeros.size();i++) { Integer thisNumero = (Integer)numeros.get(i); suma = suma + thisNumero.intValue(); System.out.print(thisNumero); if (i<numeros.size()-1) System.out.print("+"); else System.out.print("="); } System.out.println(suma);
5

import java.util.*; public class ArrayListString { public static void main(String[] args) { ArrayList cadenas = new ArrayList(); cadenas.add("hello"); cadenas.add(","); cadenas.add("are"); cadenas.add("you"); cadenas.add("?"); for (int i=0;i<cadenas.size();i++) { Object object = cadenas.get(i); String cadena = object.toString(); cadena = cadena.toUpperCase(); System.out.print(cadena+" "); }

Ms Mtodos de ArrayList
http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html

void set(index, obj) Sustituye el elemento en la posicin index por el objeto obj. (index tiene que ser entre 0 y size()-1) dentro del ArrayList, sustituyendo el elemento previamente almacenado a la posicin N. Es equivalente a A[N] = obj para un array A. Object remove(index) -- Elimina el elemento a la posicin index (index entre 0 y size()-1). Devuelve el objeto eliminado Los elementos despus de este objeto estn rebajados de una posicin. El tamao del ArrayList disminuye de 1. int indexOf(obj) -- Busca el objeto obj dentro del ArrayList, y si lo encuentra, devuelve la posicin donde lo ha encontrado. Si no, devuelve -1.

Ejercicios
Escribir los siguientes mtodos: void eliminarTodos(ArrayList cadenas,String cadena) Elimina todas las copias de cadena dentro de cadenas int min(ArrayList numeros) Devuelve el nmero ms pequeo del array dinmico void toUpperCase(ArrayList cadenas) Sustituye cada cadena (String) del arrayList por la su versin myuscula. int veces(ArrayList cadenas,String cadena) Devuelve el nmero de veces que aparece la cadena en el array dinmico de cadenas.

Iterator
Para recorrer un ArrayList, podemos llamar a get dado un ndice (como en los mtodos anteriores). Podemos prescindir de los ndices y usar un Iterator sobre este ArrayList: ArrayListIterator.java La clase Iterator pertenece al paquete java.util La nica funcin de un objeto de tipo Iterator es recorrer un ArrayList. Iterator tiene como mtodos hasNext (que devuelve un boolean) y next (que devuelve un Object). Como StringTokenizer, un objeto de tipo Iterator es de un solo uso.
9

import java.util.*; public class ArrayListIterator { public static void main(String[ ] args) { ArrayList thisArrayList = new ArrayList(); thisArrayList.add("hello"); thisArrayList.add(","); thisArrayList.add("are"); thisArrayList.add("you"); thisArrayList.add("?"); Iterator it = thisArrayList.iterator(); while (it.hasNext()) System.out.print(it.next()+" ");

} }

10

HashMap
Un HashMap es un array asociativo (o hash table). Contiene asociaciones <clave,valor>, donde la clave es nica y permite acceder al valor. Ejemplos de asociaciones:
La lista de alumnos, cada alumno es accesible por su NIA. El directorio telefnico, cada nmero se accede por los apellidos y la direccin. Un diccionario, cada definicin se accede por lemma.

Ejemplo: UseHashMap.java

11

Mtodos de HashMap
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

int size() -- El tamao actual = nmero de mappings <clave,valor> boolean isEmpty() - Devuelve true si el map es vaco void put(clave,valor) - Aade el mapping <clave,valor> a map, donde clave y valor son objetos. Si clave ya existe, sustituye su valor por valor.

12

import java.util.*; public class UseHashMap{ public static void main(String[] args) { String aa= "INDIA"; HashMap hashmap = new HashMap(); hashmap.put("one",new Integer(1)); hashmap.put("two",null); hashmap.put("three","THREE"); hashmap.put("four",aa); System.out.println("The size of HashMap = "+ hashmap.size()); System.out.println("If hashmap empty = "+ hashmap.isEmpty());

13

Mtodos de HashMap
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

Object get(clave) - Devuelve el valor asociado con clave, o null si clave no existe dentro de map. Set keySet( ) - Devuelve un Set (conjunto de elementos individuales nicos) correspondiente a las claves del map. Podemos iterar sobre este Set (con un Iterator).

14 Nota: Set es una clase de java.util

System.out.println("The elements of HashMap are"); Set set= hashmap.keySet(); Iterator iter = set.iterator(); while(iter.hasNext()){ Object clave = iter.next(); Object valor = hashmap.get(clave); System.out.println("Key: " + clave + " Value: " + valor);

Para recorrer un hashmap:


Conseguimos el conjunto de claves Recorremos este conjunto, y para cada clave, sacamos su valor correspondiente en el hashmap

15

Mtodos de HashMap
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

boolean containsKey(clave) - Devuelve true si clave existe dentro de map como clave boolean containsValue(valor) - Devuelve true si valor existe dentro de map como valor

16

System.out.println("Contains key \"one\" ="+hashmap.containsKey("one")); System.out.println("Contains key \"five\" ="+hashmap.containsKey("five")); System.out.println("Contains value of variable aa \"INDIA\" ="+hashmap.containsValue(aa)); Integer thisInteger = new Integer(6); System.out.println("Contains value \6\ as Integer ="+hashmap.containsValue(thisInteger)); System.out.println("The value for the \"three\" key =" + hashmap.get("three"));

17

Mtodos de HashMap
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

Object remove(obj) - Elimina la asociacin cuya clave es obj. Devuelve el valor asociado con esta clave antes de eliminar. Collection values( ) - Devuelve una Collection (conjunto de elementos individuales no nicos) de los valores que hay dentro del hashmap. Podemos iterar sobre esta Collection. void clear() - elimina todos los mappings <clave,valor> del array.

18 Nota: Collection es una clase de java.util

hashmap.remove("two"); System.out.println("The size of HashMap has reduced by one"); System.out.println("The size of HashMap = " + hashmap.size()); System.out.println("The values of HashMap are =" + hashmap.values()); //Remove all the elements from the HashMap hashmap.clear(); System.out.println("If hashmap empty = " + hashmap.isEmpty());

19

Ejercicios
Escribir los mtodos: Alumno getAlumno(HashMap alumnos,String nia) Dado un array asociativo de <NIA,objeto-alumno>, el mtodo devuelve el valor (objeto-alumno) dado la clave. void increment(HashMap palabras,String palabra) Dado un array asociativo palabras de <cadena,numero>, donde cadena es una palabra (tipo) de un corpus y numero el nmero de veces que ocurre en el corpus, el mtodo incrementa de uno el nmero de veces que ocurre palabra. Importante: puede que palabra no exista en el hashmap, en tal caso habr que aadirlo.

20

También podría gustarte