introducció a java collections

51
Java COLLECTIONS UF4 - Programació Xavier Sala Pujolar Institut Cendrassos

Upload: xavier-sala

Post on 18-Dec-2014

111 views

Category:

Software


1 download

DESCRIPTION

Introducció a Java Collections en el mòdul de programació per als alumnes de Desenvolupament d'Aplicacions Web (DAW)

TRANSCRIPT

Page 1: Introducció a Java Collections

Java

COLLECTIONS

UF4 - ProgramacióXavier Sala PujolarInstitut Cendrassos

Page 2: Introducció a Java Collections

En programació es fan servir arrays per guardar objectes del mateix tipus

Mida fixa

0 1 2 3

Page 3: Introducció a Java Collections

El paquet collections conté un grup d'objectes pensats per emmagatzemar-ne d'altres

java.util.collections

Page 4: Introducció a Java Collections

Dissenyats per ser eficients i per emmagatzemar qualsevol tipus de dades

Page 5: Introducció a Java Collections

Creixen i decreixen segons la quantitat de dades que contenen

12

24

Page 6: Introducció a Java Collections

S'hi treballa d'una forma comuna.

Caixa.add(Llapis)

Afegir un element

Page 7: Introducció a Java Collections

Caixa.remove(Llapis)

Treure un element

Page 8: Introducció a Java Collections

Caixa.contains(Llapis)

True

Cercar un element

Page 9: Introducció a Java Collections

Proporciona un mètode per saber-ne la mida

Caixa.size()

12

Quants elements hi

ha?

Page 10: Introducció a Java Collections

Caixa.clear()

Buidar la col·lecció

Page 11: Introducció a Java Collections

Caixa.isEmpty()

True

Comprovar l'estat

Page 12: Introducció a Java Collections

Collections defineix interfícies per emmagatzemar les dades de diferents formes

Page 13: Introducció a Java Collections

Map

SortedMap

Collections

List Queue Set

SortedSet

Interfícies

Iterator

Deque

Page 14: Introducció a Java Collections

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

Page 15: Introducció a Java Collections

Però a Collections també hi ha implementacions de les interfícies

CAIXA

Page 16: Introducció a Java Collections

List: Permet emmagatzemar una llista seqüencial d'objectes

0 1 2 3

Page 17: Introducció a Java Collections

List

ArrayList

Vector

LinkedList

Stack

Page 18: Introducció a Java Collections

Queue i Deque: Permeten emmagatzemar una llista d'objectes però que funcionen com una cua

Page 19: Introducció a Java Collections

Queue

LinkedList

PriorityQueue

Deque

ArrayDeque

Page 20: Introducció a Java Collections

Set: Permet emmagatzemar una col·lecció d'objectes sense repeticions

Page 21: Introducció a Java Collections

Set

HashSet

LinkedHashSet

EnumSet

SortedSet

TreeSet

NavigableSet

Page 22: Introducció a Java Collections

Map: Permet emmagatzemar objectes amb una clau única per localitzar-los

Vermell Groc Blau Verd

Page 23: Introducció a Java Collections

Map

SortedMap

NavigableMap

HashMap TreeMap

LinkedHashMap

Page 24: Introducció a Java Collections

Localitzar elements

Page 25: Introducció a Java Collections

Les col·leccions disposen d'una funció per localitzar-hi objectes

boolean jaHiEs = llista.contains(c);

Cal que es puguin comparar

Page 26: Introducció a Java Collections

Poder comparar objectes també és important quan es volen eliminar

llista.remove(c);

Cal poder-lo reconéixer...

Page 27: Introducció a Java Collections

public boolean equals(Object o)

Funcionarà amb els objectes que implementin la funció equals

True

False

Page 28: Introducció a Java Collections

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;}

Ha de comprovar l'objecte amb qualsevol altre

Page 29: Introducció a Java Collections

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

Page 30: Introducció a Java Collections

Recórrer una col·lecció

Page 31: Introducció a Java Collections

Totes les col·leccions es poden recórrer de la mateixa forma

for iterators

For loop forEach

Però amb varies possibilitats

Page 32: Introducció a Java Collections

List<Caixa> caixes = new ArrayList<Caixa>();

...

for (int i=0; i < caixes.size(); i++) { System.out.println(caixes.get(i))}

Bucle for...

Page 33: Introducció a Java Collections

List<Caixa> caixes = new ArrayList<Caixa>();

...

for (Caixa c: caixes) { System.out.println(c)}

Bucle for...loop

Page 34: Introducció a Java Collections

Els iteradors són objectes que es fan servir per recórrer col·leccions

No es poden reciclar

Page 35: Introducció a Java Collections

List<Caixa> caixes = new ArrayList<Caixa>();

... iterator<Caixa> it = caixes.iterator();while (it.hasNext()) { Caixa c = iter.next(); System.out.println(c)}

Iteradors

Page 36: Introducció a Java Collections

List<Caixa> caixes = new ArrayList<Caixa>();

... Caixes.forEach(System.out::println);

Funció forEach()

Page 37: Introducció a Java Collections

Ordenar una col·lecció

Page 38: Introducció a Java Collections

Les col·leccions es poden ordenar fent servir Collections.sort()

Page 39: Introducció a Java Collections

Els objectes a ordenar han d'implementar Comparable

public class Caixa implements Comparable<Caixa> {

Sóc Comparable!

Page 40: Introducció a Java Collections

Que obliga a implementar el mètode compareTo(Caixa o)

Sóc més petita: -1

Sóc més gran: +1

Page 41: Introducció a Java Collections

Es pot fer servir qualsevol aspecte de l'objecte per ordenar

getPes()

getContingut()

getAltura()

Page 42: Introducció a Java Collections

Collections.sort(caixes);

Page 43: Introducció a Java Collections

Per ordenar per criteris diferents al predefinit es fa servir un Comparador

Un objecte que

determinarà l'ordre

Page 44: Introducció a Java Collections

public class Comparador implements Comparator<Caixa> {

L'objecte comparador ha d'implementar Comparator

Page 45: Introducció a Java Collections

Que li fa implementar el mètode:

compare(Caixa c1, Caixa c2);

-1

+1

Page 46: Introducció a Java Collections

Collections.sort(caixes, Comparador);

Page 47: Introducció a Java Collections

Des de Java8 el comparador no cal crear-lo explícitament

caixes.sort((u1, u2) -> u1.getPes() - u2.getPes());

8

Page 48: Introducció a Java Collections

010010001001010110110111101

Les col·leccions permeten obtenir Streams

Stream<Llapis> x = Caixa.stream()

8

Page 49: Introducció a Java Collections

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

Page 50: Introducció a Java Collections

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

Page 51: Introducció a Java Collections

Desenvolupament d'Aplicacions Web

Les imatges són de OpenClipart o meves

Versió 1 - 2014