Rappels Java

publicité
Les Collections en JAVA
Rappels Java
1
Les Collections en JAVA
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
2
ƒ1
Les Collections en JAVA
Autour des collections
¬ Interfaces
¬ Implémentation
¬ Manipulation / Algorithmes
3
Les Collections en JAVA
Hiérarchie d’Interfaces:
http://java.sun.com/docs/
4
ƒ2
Les Collections en JAVA
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.
5
Les Collections en JAVA
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);
6
ƒ3
Les Collections en JAVA
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);
}
7
Les Collections en JAVA
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)
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
8
ƒ4
Les Collections en JAVA
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
9
Les Collections en JAVA
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();
10
ƒ5
Les Collections en JAVA
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[]);
}
11
Les Collections en JAVA
Implémentations
¬ HashSet
¬implantation par table de hachage
¬ajout d'élément rapide
¬test d'appartenance très rapides
¬ TreeSet
¬les éléments sont placés dans (un arbre de
recherche binaire équilibré)
¬les éléments sont triés
12
ƒ6
Les Collections en JAVA
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);
}
}
13
Les Collections en JAVA
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]
14
ƒ7
Les Collections en JAVA
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)
15
Les Collections en JAVA
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);
16
ƒ8
Les Collections en JAVA
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());
}
17
Les Collections en JAVA
Interface Enumeration
¬ boolean hasMoreElements()
¬ Object nextElement()
¬ Implémentation:
¬public class StringTokenizer implements
Enumeration
18
ƒ9
Les Collections en JAVA
Vector
¬ Comme un tableau array
¬Contient des éléments accessibles par leur indice
¬…
¬ Différent d’un tableau
¬Taille variable
¬Contenu hétérogène
¬/!\ collection d’objets
19
Les Collections en JAVA
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
20
ƒ10
Les Collections en JAVA
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()
……………………….
21
Les Collections en JAVA
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)
22
ƒ11
Les Collections en JAVA
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.
23
ƒ12
Téléchargement