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