SlideShare a Scribd company logo
1 of 51
Download to read offline
Java 
COLLECTIONS 
UF4 - Programació 
Xavier Sala Pujolar 
Institut Cendrassos
En programació es fan 
servir arrays per 
guardar objectes del 
mateix tipus 
0 1 2 3 
Mida fixa
El paquet 
collections conté un 
grup d'objectes 
pensats per 
emmagatzemar-ne 
d'altres 
java.util.collections
Dissenyats per ser 
eficients i per 
emmagatzemar 
qualsevol tipus de 
dades
Creixen i decreixen 
segons la quantitat 
de dades que contenen 
12 
24
S'hi treballa d'una forma comuna. 
Caixa.add(Llapis) 
Afegir un 
element
Caixa.remove(Llapis) 
Treure un 
element
Caixa.contains(Llapis) 
True 
Cercar un 
element
Proporciona un mètode 
per saber-ne la mida 
Caixa.size() 
12 
Quants 
elements hi 
ha?
Caixa.clear() 
Buidar la 
col·lecció
Caixa.isEmpty() 
True 
Comprovar 
l'estat
Collections defineix 
interfícies per 
emmagatzemar les 
dades de diferents 
formes
Map 
SortedMap 
Collections 
List Queue Set 
SortedSet 
Interfícies 
Iterator 
Deque
Les interfícies no es 
poden crear perquè 
només són 
especificacions 
CAIXA 
Considerarem «Caixa» 
als objectes que 
permetin posar-hi 
altres objectes a 
dins i tinguin tapa
Però a Collections 
també hi ha 
implementacions de 
les interfícies 
CAIXA
List: Permet 
emmagatzemar una 
llista seqüencial 
d'objectes 
0 1 2 3
List 
ArrayList 
Vector 
LinkedList 
Stack
Queue i Deque: 
Permeten emmagatzemar 
una llista d'objectes 
però que funcionen 
com una cua
Queue 
LinkedList 
PriorityQueue 
Deque 
ArrayDeque
Set: Permet 
emmagatzemar una 
col·lecció d'objectes 
sense repeticions
Set 
HashSet 
LinkedHashSet 
EnumSet 
SortedSet 
TreeSet 
NavigableSet
Map: Permet emmagatzemar 
objectes amb una clau única 
per localitzar-los 
Vermell Groc Blau Verd
Map 
SortedMap 
NavigableMap 
HashMap TreeMap 
LinkedHashMap
Localitzar elements
Les col·leccions 
disposen d'una funció 
per localitzar-hi 
objectes 
boolean jaHiEs = llista.contains(c); 
Cal que es 
puguin comparar
Poder comparar 
objectes també és 
important quan es 
volen eliminar 
llista.remove(c); 
Cal poder-lo 
reconéixer...
Funcionarà amb els 
objectes que 
implementin la funció 
equals 
public boolean equals(Object o) 
True 
False
Ha de comprovar 
l'objecte amb 
qualsevol altre 
public boolean equals(Object o) { 
if(o == null) 
return false; 
if(!(o instanceof) Llapis) 
return false; 
Llapis other = (Llapis) o; 
return this.color == other.color; 
}
La funció hashCode() 
es fa servir en 
col·leccions que fan 
servir Hash 
public int hashCode() 
Ha de retornar 
un valor 
diferent per 
objectes 
diferents
Recórrer una col·lecció
Totes les 
col·leccions es poden 
recórrer de la 
mateixa forma 
Però amb varies possibilitats 
for iterators 
For loop forEach
Bucle for... 
List<Caixa> caixes = 
new ArrayList<Caixa>(); 
... 
for (int i=0; i < caixes.size(); i++) { 
System.out.println(caixes.get(i)) 
}
Bucle for...loop 
List<Caixa> caixes = 
new ArrayList<Caixa>(); 
... 
for (Caixa c: caixes) { 
System.out.println(c) 
}
Els iteradors són 
objectes que es fan 
servir per recórrer 
col·leccions 
No es 
poden 
reciclar
Iteradors 
List<Caixa> caixes = 
new ArrayList<Caixa>(); 
... 
iterator<Caixa> it = caixes.iterator(); 
while (it.hasNext()) { 
Caixa c = iter.next(); 
System.out.println(c) 
}
Funció forEach() 
List<Caixa> caixes = 
new ArrayList<Caixa>(); 
... 
Caixes.forEach(System.out::println);
Ordenar una col·lecció
Les col·leccions es 
poden ordenar fent 
servir 
Collections.sort()
Els objectes a 
ordenar han 
d'implementar 
Comparable 
public class Caixa 
implements Comparable<Caixa> { 
Sóc 
Comparable!
Que obliga a 
implementar el mètode 
compareTo(Caixa o) 
Sóc més 
petita: -1 
Sóc més 
gran: +1
Es pot fer servir 
qualsevol aspecte de 
l'objecte per ordenar 
getPes() 
getAltura() 
getContingut()
Collections.sort(caixes);
Per ordenar per 
criteris diferents 
al predefinit es fa 
servir un 
Comparador 
Un objecte 
que 
determinarà 
l'ordre
L'objecte comparador 
ha d'implementar 
Comparator 
public class Comparador 
implements Comparator<Caixa> {
Que li fa implementar 
el mètode: 
compare(Caixa c1, Caixa c2); 
-1 
+1
Collections.sort(caixes, Comparador);
Des de Java8 el 
comparador no cal 
crear-lo explícitament 
caixes.sort((u1, u2) -> 
8 
u1.getPes() - u2.getPes());
Les col·leccions 
permeten obtenir 
Streams 
0 1 0 010 0 01 001010110110 1 111 01 
Stream<Llapis> x = 
Caixa.stream() 
8
Els Streams permeten 
treballar d'una forma 
diferent a com es feia 
fins ara 
int total = Caixa.stream() 
.filter(x -> x.getPes() > 5) 
.count(); 
8
I també es pot fer 
servir per ordenar 
Collections... 
caixes.stream() 
.sorted((e1, e2) -> 
Integer.compare(e1.getPes(), 
e2.getPes())) 
.forEach(System.out::println); 
8
Desenvolupament d'Aplicacions Web 
Versió 1 - 2014 
Les imatges són de OpenClipart o meves

More Related Content

More from Xavier Sala Pujolar (18)

Introducció a Docker
Introducció a DockerIntroducció a Docker
Introducció a Docker
 
Git
GitGit
Git
 
Validació de Documents XML amb XSD
Validació de Documents XML amb XSDValidació de Documents XML amb XSD
Validació de Documents XML amb XSD
 
Subversion
SubversionSubversion
Subversion
 
Criptografia
CriptografiaCriptografia
Criptografia
 
RIP
RIPRIP
RIP
 
OSPF
OSPFOSPF
OSPF
 
Openldap
OpenldapOpenldap
Openldap
 
Llei de Serveis de la Societat de la Informació (LSSI)
Llei de Serveis de la Societat de la Informació (LSSI)Llei de Serveis de la Societat de la Informació (LSSI)
Llei de Serveis de la Societat de la Informació (LSSI)
 
Llei de Protecció de dades de caràcter personal (LOPD)
Llei de Protecció de dades de caràcter personal (LOPD)Llei de Protecció de dades de caràcter personal (LOPD)
Llei de Protecció de dades de caràcter personal (LOPD)
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Virtualització (2 part)
Virtualització (2 part)Virtualització (2 part)
Virtualització (2 part)
 
Virtualització
VirtualitzacióVirtualització
Virtualització
 
Enginyeria social
Enginyeria socialEnginyeria social
Enginyeria social
 
Css en XML
Css en XMLCss en XML
Css en XML
 
Creació de documents xml
Creació de documents xmlCreació de documents xml
Creació de documents xml
 
Introducció a xml
Introducció a xmlIntroducció a xml
Introducció a xml
 
Programació de sockets amb C++
Programació de sockets amb C++Programació de sockets amb C++
Programació de sockets amb C++
 

Introducció a Java Collections