Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Rappels Java
2
Les tableaux Array sont des exemples d’implémentation d’une collection
Les collections Une collection est un objet qui regroupe de multiples éléments en une seule unité. exemples: collection de joueurs collection d’objets d’art Les tableaux Array sont des exemples d’implémentation d’une collection La Classe Vector en est une autre
3
Autour des collections
Interfaces Implémentation Manipulation / Algorithmes
4
Hiérarchie d’Interfaces:
5
{♣,☼,,,,} [☼;;;; ☼;;] 6
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.
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);
8
Interface List int indexOf(Object o); //première occurrence
// 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); }
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
10
Représente un ensemble dans le sens mathématique
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émentations HashSet, TreeSet
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();
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[]); }
13
Implémentations HashSet TreeSet
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
14
Implémentations LinkedHashSet
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); }
16
java TrouveDoublons salut bonjour tcho tcho hello
> Doublon : tcho > mots différents : [tcho, hello, salut, bonjour] Et si on utilise un TreeSet > mots différents : [bonjour, hello, salut, tcho]
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)
18
Opération sur les ensembles [Set]
Pour effectuer ces opérations sans destruction, utiliser un ensemble supplémentaire exemple : Set union = new HashSet(s1); union.add(s2);
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()); }
20
Interface Enumeration
boolean hasMoreElements() Object nextElement() Implémentation: public class StringTokenizer implements Enumeration
21
Différent d’un tableau
Vector Comme un tableau array Contient des éléments accessibles par leur indice Java 1. peux utilisée dans les programmes actuels Différent d’un tableau Taille variable Contenu hétérogène /!\ collection d’objets
22
Vector Constructeurs Méthodes Vector() Vector(Collection c) …
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
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() ……………………….
24
(similaire à la classe Arrays) fournit des méthodes pour :
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)
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.
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( )) ;
27
Iterator Avantages Peut renvoyer un itérateur:
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
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
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
30
MAP (associations) Cas d’utilisation:
Encapsulation: fabriquer des liens entre objet sans modifier ces derniers Multiensembles: Map (élément, nombre d’occurences)
31
Implémentations HashMap : TreeMap : LinkedHashMap
implémentation usuelle Ordre aléatoire des clés Ajout, accès rapides TreeMap : clés de la Map triés Ajout lent LinkedHashMap
32
Faire référence aux collections en utilisant les interfaces:
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.