Las colecciones son una especie de arrays de tamao dinmico. Para usarlas
haremos uso del Java Collections Framework (JCF), el cual contiene un conjunto
de clases e interfaces del paquete java.util para gestionar colecciones de
objetos.
En Java las principales interfaces que disponemos para trabajar con colecciones
son: Collection, Set, List, Queue y Map:
2.
3.
1 import java.util.*;
2 public class Main {
3
// LinkedList
7
// Aadimos nodos y creamos un Iterator
8
lista1.add("Madrid");
9
lista1.add("Sevilla");
10
lista1.add("Valencia");
11
Iterator iterador = lista1.iterator();
12
13
// Recorremos y mostramos la lista
14
while (iterador.hasNext()) {
15
String elemento = (String) iterador.next();
16
System.out.print(elemento + " ");
17
}
18
System.out.println("--LinkedList--");
19
20
// ArrayList
21
List lista2 = new ArrayList();
22
23
// Aadimos nodos y creamos un Iterator
24
lista2.add("Madrid");
25
lista2.add("Sevilla");
26
lista2.add("Valencia");
27
Iterator iterador2 = lista2.iterator();
28
29
// Recorremos y mostramos la lista
30
while (iterador2.hasNext()) {
31
String elemento = (String) iterador2.next();
32
System.out.print(elemento + " ");
33
}
34
System.out.println("--ArrayList--");
35
}
36
}
37
Set<E>: No puede haber duplicados. Cada elemento debe ser nico, por
lo que si existe uno duplicado, no se agrega. Por regla general, cuando se
2.
3.
4.
Ejemplo de Map:
1 import java.util.*;
2 public class Ejemplo
3 {
4
// Definir un HashMap
7
HashMap global = new HashMap();
8
9
// Insertar valores "key"-"value" al HashMap
10
global.put("Laura", "667895789");
11
global.put("Pepe", "645895756");
12
global.put("Abelardo", "55895711");
13
global.put("Daniel", "667111788");
14
global.put("Arturo", "667598623");
15
16
// Definir Iterator para extraer o imprimir valores
17
for( Iterator it = global.keySet().iterator(); it.hasNext();) {
18
String s = (String)it.next();
19
String s1 = (String)global.get(s);
20
System.out.println("Alumno: "+s + " - " + "Telefono: "+s1);
21
}
22
}
23
}
24
Otros tipos de
colecciones: singleton(), singletonList(), singletonMap(). Devuelven
conjunto, lista y mapa inmutables, con un nico elemento. tiles para pasar
un elemento a un mtodo que espera una coleccin.
El siguiente cdigo es un ejemplo de Colecciones:
import java.util.*;
public class EjemploColecciones {
public static void main(String[] args) {
Collection<String> col1 = new HashSet<String>();
Collection<String> col2 = Arrays.asList("valor1", "valor2");
Collection<String> col3 = Collections.singleton("valor3");
// add() y addAll() devuelven true si cambia la coleccin.
// Importa en conjuntos
if (col1.add("cero"))
System.out.println ("col1 modificada");
if (col1.addAll(col2))
System.out.println ("col1 modificada");
// Copiamos usando un copy constructor
Collection<String> copia = new ArrayList<String>(col1);
col1.remove("cero");
// eliminar un elemento
col1.removeAll(col3);
// eliminar los elementos en e de c
col1.retainAll(col2);
// elimina de c los que no estn en d
col1.clear();
// eliminar todos
boolean b = col1.isEmpty();
// b == true
int s = col1.size();
// s == 0
// Recuperamos en c la copia
b = col1.addAll(copia); // b == true
b = col1.contains("cero");
// b == true
b = col1.containsAll(col2);
// b == true;
// Recorremos col1
Iterator<String> iterador = col1.iterator();
while(iterador.hasNext())
System.out.println(iterador.next());
for(Iterator<String> i = col1.iterator(); i.hasNext();)
System.out.println(i.next());
// Recorremos de col1
for(String word : col1) System.out.println(word);
// Las colecciones tienen toString()
System.out.println(col1);
// Copia en un Array
Object[] elementos = col1.toArray();
// Obtenemos una copia
String[] strings = col1.toArray(new String[col1.size()]);
//Sin necesidad de saber el tamao
strings = col1.toArray(new String[0]);
}
}
Para poder iterar sobre ellos, es necesario un objeto Iterator como hemos
visto en el ejemplo.
2.
3.
ts.add("Alonso");
ts.add("alonso");
ts.add("Conchi");
ts.add("Emilio");
10
ts.add("Gmez");
11
ts.add("manuela");
12
ts.add("Manuela");
13
System.out.println(ts);
14
15 }
16
17 // --- Clase Comparacion --- /
18 import java.util.*;
19 class Comparacion implements Comparator {
20
21
22
23
24 }
El resultado es el siguiente:
10
11
12
13
14
System.out.println(ts);
}
15 }
16
17 // --- Clase Persona --- /
18 import java.util.*;
19
22
23
24
25
return Nombre;
}
26
27
28
29
return apellido;
}
30
31
32
if (Nombre==null || apellido==null)
33
34
this.Nombre = Nombre;
35
this.apellido = apellido;
36
37
38
39
40
return false;
41
Persona n = (Persona)o;
42
43
44
45
n.apellido.equals(apellido);
46
47
48
49
50
51
52
53
54
55
56
57
58
Persona n = (Persona)o;
59
60
61
62
63 }
Y el resultado:
TIPOS GENRICOS
Los tipos genricos permiten forzar la seguridad de los tipos, en tiempo de
compilacin, en las colecciones (u otras clases y mtodos que utilicen tipos
parametrizados).
El problema que resuelven es que si al crear una coleccin de un tipo
determinado, pongamos String, yo meto un elemento de tipo entero,
entonces me dar una excepcin. Los genricos ayudaron a crear una
comprobacin de tipo en listas y mapas en tiempo de compilacin,
anteriormente esto no era posible. Otra cosa que podemos hacer en con los
tipos parametrizados o genricos es crear nuestras propias clases.
Veamos el problema y la solucin con tipos genricos:
5
6
7
8
this.object = object;
}
9
10
11
12
13
14
15
return this.object;
}
16 }
17
18 // --- Con tipos genericos --- /
19 // Para solucionarlo, usaremos esto:
20 public class Box<T>
21 {
22
private T t;
23
24
25
26
this.t = t;
}
27
28
public T get() {
29
30
return t;
}
31 }
32
33 // Debemos instanaciar la clase de la siguiente forma:
34 Box <String> boxes = new Box<String> ();
35 // Todos los tipos parametrizados se reemplazaran por la <Clase>
5.
K Key
6.
N Number
7.
T Type
8.
V Value
9.