32
Les Collections en JAVA 1 Rappels Java

Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Embed Size (px)

Citation preview

Page 1: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

1

Rappels Java

Page 2: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

2

Les collections Une collection est un objet qui regroupe de

multiples éléments en une seule unité. exemples:

collection de joueurscollection d’objets d’art

Les tableaux Array sont des exemples d’implémentation d’une collection

La Classe Vector en est une autre

Page 3: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

3

Autour des collections

Interfaces Implémentation Manipulation / Algorithmes

Page 4: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

4

Hiérarchie d’Interfaces:

http://java.sun.com/docs/

Page 5: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

5

{♣,☼,,,,}

[☼;;;; ☼;;]

6

Page 6: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

6

Interface List

Une collection ordonnée (connue aussi sous le nom séquence).

L’utilisateur de cette interface a le contrôle sur les places ou sont inséré les éléments.

Contrairement à un ensemble, une liste peut contenir des éléments dupliqués.

Page 7: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

7

Interface List

public interface List extends Collection {

// Positional Access Object get(int index); Object set(int index, Object element); void add(int index, Object element); Object remove(int index); boolean addAll(int index, Collection c);

Page 8: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

8

Interface List

// recherche int indexOf(Object o); //première occurrence

int lastIndexOf(Object o); // Itération ListIterator listIterator(); ListIterator listIterator(int index); //sous liste

List subList(int from, int to); }

Page 9: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

9

List / implémentations

ArrayList · maintenue dans un tableau redimensionnable · l'accès à un élément par son indice RAPIDE · insertion LENTE (surtout si elle a lieu au début de la liste)

mais rapide en fin de liste LinkedList · formée de cellules liées par des références · insertion d'éléments RAPIDE · l'accès à un élément par son indice LENT Vector · similaire à ArrayList

Page 10: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

10

Interface Set:

Depuis java 1.2 public interface Set extends Collection

Représente un ensemble dans le sens mathématique« Collection d’ojets distincts, non ordonnés »

ImplémentationsHashSet, TreeSet

Page 11: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

11

Interface Set

public interface Set { // Opérations basiques int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); remove(Object element); Iterator iterator();

Page 12: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

12

Interface Set

//autres opérations boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); Object[] toArray(); Object[] toArray(Object a[]);

}

Page 13: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

13

Implémentations

HashSet implantation par table de hachage (Ordre aléatoire) ajout d'élément rapide test d'appartenance très rapides Les opérations add, remove, contains and size sont

exécutées en un temps constant. TreeSet

les éléments sont placés dans (un arbre de recherche binaire équilibré)

les éléments sont triés Les opérations add, remove, contains and size sont

relativement lentes

Page 14: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

14

Implémentations

LinkedHashSet

Page 15: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

15

Implémentations

import java.util.*;

public class TrouveDoublons {

public static void main(String args[]) { Set s = new HashSet(); for (int i=0; i<args.length; i++){ if (!s.add(args[i])) System.out.println("Doublon :" + args[i]); } System.out.println(s.size()+" mots différents : "+s); }}

Page 16: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

16

java TrouveDoublons salut bonjour tcho tcho hello

> Doublon : tcho> mots différents : [tcho, hello, salut, bonjour]Et si on utilise un TreeSet> Doublon : tcho> mots différents : [bonjour, hello, salut, tcho]

Page 17: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

17

Opération sur les ensembles [Set]

s1.containsAll(s2): teste l'inclusion de s2 dans s1

s1.addAll(s2) union de s1 et s2 s1.retainAll(s2) intersection de s1 et s2 s1.removeAll(s2) différence entre s1 et s2/!\ ne donne pas le même résultat que

s2.removeAll(s1)

Page 18: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

18

Opération sur les ensembles [Set]

Pour effectuer ces opérations sans destruction, utiliser un ensemble supplémentaireexemple :Set union = new HashSet(s1);union.add(s2);

Page 19: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

19

interface Enumeration

Un objet implémentant cette interface génère une série d’éléments d’une manière séquentielle

La récupération des éléments de cette série s’effectue par un appel nextElement()

Exemple: imprimer les éléments d’un vecteur v

for (Enumeration e = v.elements() ; e.hasMoreElements() ;) { System.out.println(e.nextElement());

}

Page 20: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

20

Interface Enumeration

boolean hasMoreElements() Object nextElement() Implémentation:

public class StringTokenizer implements Enumeration

Page 21: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

21

Vector

Comme un tableau arrayContient des éléments accessibles par leur indiceJava 1. peux utilisée dans les programmes

actuels Différent d’un tableau

Taille variableContenu hétérogène /!\ collection d’objets

Page 22: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

22

Vector

Constructeurs Vector() Vector(Collection c) …

Méthodes add(int index, Object element) add(Object o) addAll(Collection c) ajout à la fin dans l’ordre

dans le quel ses éléments sont rendu par l’ «Iterator» de la collection

Page 23: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

23

Vector

clear() efface tous les éléments du vecteur boolean contains(Object elem) containsAll(Collection c) Object elementAt(int index) Enumeration elements() int indexOf(Object elem) int indexOf(Object elem, int index) boolean isEmpty() Object remove(int index) size() ……………………….

Page 24: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

24

La classe Collection

(similaire à la classe Arrays) fournit des méthodes pour :

trier (sort)mélanger (schuffle) inverser l'ordre des éléments (reverse) remplir (fill)

Page 25: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

25

La classe Collection

copier (copy) rechercher un élément (binarySearch) trouver les valeurs extrêmes (min, max) ! Certaines de ces méthodes ne peuvent être

utilisées que sur des Collections de type liste.

Page 26: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

26

Iterator (Itérateur)

Un itérateur est un objet permettant de parcourir en séquence les éléments d’une collection(curseur)

Semblable à Enumeration mais préférable Utile quand les éléments de la collection ne sont pas

indicés. Ex: parcours d'une liste à l'aide d'un itérateur

List ma_list =new ArrayList();…for (Iterator iter = ma_list. iterator( ) ; i.hasNext( );)System.out.println (i.next( )) ;

Page 27: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

27

Iterator

Avantages Permet de s'affranchir de toute numérotation et de parcourir

une collection quelconque sans se soucier de la manière dont sont stockées les données

Permet de supprimer un élément de la collection sous-jacente

Peut renvoyer un itérateur: Toute classe implémentant l’une des deux interfaces List et

Set

Page 28: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

28

Iterator

Les méthodes:boolean hasNext();Object next();void remove(); méthode utilisée après que

l’itérateur ait accédé à un élément

Page 29: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

29

MAP (associations)

Tableaux associatifs , Fonctions, Maps Structure pour mémoriser une collection de

couples (clé-valeur) Mécanisme de « Fonction »: les clés sont

uniques, une valeur peut-être associée à plusieurs clés.

Une clé permet de retrouver rapidement la valeur associée

Page 30: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

30

MAP (associations)

Cas d’utilisation: Encapsulation: fabriquer des liens entre objet

sans modifier ces derniersMultiensembles: Map (élément, nombre

d’occurences)

Page 31: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

31

Implémentations

HashMap : implémentation usuelleOrdre aléatoire des clésAjout, accès rapides

TreeMap : clés de la Map triésAjout lent

LinkedHashMap

Page 32: Les Collections en JAVA 1 Rappels Java. Les Collections en JAVA 2 Les collections Une collection est un objet qui regroupe de multiples éléments en une

Les Collections en JAVA

32

Conseils:

Faire référence aux collections en utilisant les interfaces:List ma_liste=new ArrayList();Set mon_ens=new TreeSet();Map ma_fonction=new HashMap();

Mais!! les classes concrètes sont souvent plus riches que les interfaces