Chapitre 7: Les collections Les collections: Définition

publicité
09/06/2014
Chapitre 7: Les collections

Définition

Les classes:

–
Vector
–
ArrayList
L'interface:
–
Comparable
POO \ N.EL FADDOULI
104
Les collections: Définition

Une collection est un objet unique permettant de gérer un groupe
d'objets
j
appelés
pp
éléments de la collection et q
qui p
peuvent être de
types différents.

L'API Collections contient des interfaces regroupant des les objets
sous l'une des formes:
–
Collection: groupe des objets appelés éléments; la mise en œuvre détermine
s'il existe un classement spécifique et si les doublons sont autorisés.
–
Ensemble: collection non ordonnée; les doublons ne sont pas autorisés.
autorisés
–
Liste: collection ordonnée, les doublons sont autorisés
POO \ N.EL FADDOULI
105
1
09/06/2014
Les collections: Tableau (taille fixe)

Un tableau est crée via une référence déclarée comme suit:
TypeDuTableau [ ] NomDuTableau;
Exemple: int [ ] T;

On crée un tableau avec l'opérateur new en précisant sa taille
NomDuTableau = new TypeDuTableau [ Taille ];
Exemple: T = new int [ 5 ];

Un tableau est un objet qui possède des attributs et sur lesquels on
peut appliquer des méthodes.
Exemple:
L'attribut length représente la taille du tableau.
La méthode toString() donne une présentation textuelle du tableau.

Possibilité de déclaration et initialisation
Exemple: int [ ] T = { 23, 45, 9 };
POO \ N.EL FADDOULI
106
Les collections: Tableau (taille fixe)

Exercice:
Ecrire un programme (main) pour:
- Lire la taille effective N d'un tableau T d'entiers
- Créer le tableau T.
- Lire N entiers dans le tableau T
- Afficher les éléments de T du dernier au premier.
N.B: Utiliser la classe Lire pour lire les N entiers.
POO \ N.EL FADDOULI
107
2
09/06/2014
Les collections: Vector (taille dynamique)





Un vecteur est un objet de type Vector (classe hérité de Java 1.0)
Il est dynamique: il permet de gérer n'importe quel nombre d'objets
((comme une liste chaînée))
Création: Vector <Classe_Mère> t = new Vector < Classe_Mère > ();
Quelques méthodes:
add (X)
: Ajoute un élément X en fin de liste
add (i, X)
: Insère un élément X dans la liste, à l’indice i
clear ()
: Supprime tous les éléments de la liste
elementAt (i)
: Retourne l’élément stocké à l’indice i
remove (i)
: Supprime l'élément d'indice i
removeRange (i, j): Supprime les éléments dont les indices  [ i , j [
size ()
: Retourne le nombre d'éléments de la liste
....
La classe Vector est dans le package java.util : import java.util.*;
POO \ N.EL FADDOULI
108
Les collections: Vector (taille dynamique)
Exemple:
import java.util.* ;
class Etudiant { private int code; private String nom;
public Etudiant(int a, String b){code=a; nom=b;}
public String toString(){return code+" "+nom;}
}
public class TestVector
{ public static void main(String [ ] args)
{ Vector
L = new Vector();
Vector <Object>
L = new Vector <Object>();
L.add(3);
// stocker des éléments hétérogènes dans le vecteur
L.add(5.67);
(
)
Etudiant e=new Etudiant(234, "Amine");
Optionnel
L.add(e);
L.add ( new Etudiant(100, "Said") ) ;

}
for(int i=0;i<L.size(); i++) System.out.println( L.elementAt(i).toString() );
}
POO \ N.EL FADDOULI
109
3
09/06/2014
Exercice

Reprendre la classe Formes pour :
–
Utiliser un attribut p
privé F q
qui est un vecteur de type
yp Forme.
–
Enlever l'attribut privé N de type entier (taille maximale de F) et
l'attribut privé R de type entier (taille effective de F))
–
Revoir les constructeurs et les méthodes de la classe.
POO \ N.EL FADDOULI
110
Les collections: ArrayList





ArrayList est une classe qui implémente l'interface List
Permet de gérer n'importe quel nombre d'objets dans une liste
chaînée.
Création: Vector <Classe_Mère> t = new Vector < Classe_Mère > ();
Quelques méthodes:
add (X)
: Ajoute un élément X en fin de liste
add (i, X)
: Insère un élément X dans la liste, à l’indice i
clear ()
: Supprime tous les éléments de la liste
get(i)
: Retourne l’élément stocké à l’indice i
remove (i)
: Supprime l'élément d'indice i
removeRange (i, j): Supprime les éléments dont les indices  [ i , j [
size ()
: Retourne le nombre d'éléments de la liste
....
La classe ArrayList est dans le package java.util : import java.util.*;
POO \ N.EL FADDOULI
111
4
09/06/2014
Les collections: ArrayList
Exemple:
import java.util.*;
public class ListExemple {
public static void main(String []args) {
List l = new ArrayList ();
l.add("Un");
l.add("Deux");
l.add(3);
l.add(new Integer(4));
l.add("Deux");
System.out.println( l ); // ou System.out.println(l.toString());
}}
Résultat: [Un, Deux, 3, 4, Deux]

POO \ N.EL FADDOULI
112
Les collections: Classements des éléments








Les interfaces Comparable et Comparator sont utiles pour classer
les collections.
Ils permettent de comparer les éléments d
d'une
une collection.
collection
L'interface Comparable fait partie du package java.Lang.
Lorsqu'on crée une classe, la JVM n'a aucun moyen de déterminer
l'ordre envisagé pour les objets de cette classe.
L'implémentation de l'interface Comparable permet d'ordonner les
objets d'une classe.
Les classes Byte, Long, String, Date, Float... implémentent l'interface
Comparable.
Comparable
La méthode statique sort de la class Collections permet de trier une
liste passée en argument.
Pour permettre de comparer les objets d'une classe, cette dernière
doit
implémenter la méthode compareTo de l'interface
Comparable.
POO \ N.EL FADDOULI
113
5
09/06/2014
Les collections: Classements des éléments
Exmeple:
import java.util.* ;
class Etudiant implements

Comparable
{ private int code; private String nom;
public Etudiant(int a, String b){code=a; nom=b;}
public String toString() {return "Code:"+code+" Nom: "+nom;}
public int compareTo(Object e)
{ Etudiant o = (Etudiant) e;
if(this.code==o.code)
if(this.code
o.code) return 0; // égaux
if (this.code < o.code) return -1; // this est inférieur à e
return 1; // this est supérieur à e
}
}
POO \ N.EL FADDOULI
114
Les collections: Classements des éléments
public class TestComparable {
public static void main(String [ ] args)
{
Etudiant e1 = new Etudiant(350, "Amine");
Etudiant e2 = new Etudiant(300, "Khalid");
if(e1.compareTo(e2)==0)
System.out.println( "Egaux " );
else
if(e1.compareTo(e2) 1)
if(e1.compareTo(e2)==1)
System.out.println( "e1 > e2" );
else
System.out.println( "e1 < e2" );
} }
POO \ N.EL FADDOULI
115
6
09/06/2014
Les collections: Classements des éléments
public class TestComparable {
public static void main(String [ ] args)
{ List A = new ArrayList();
A.add(new Etudiant(500, "Amine"));
A.add( new Etudiant(300, "Khalid"));
A.add( new Etudiant(400, "Omar"));
System.out.println("Avant le tri: "+ A );
Collections.sort(A);
System.out.println("Après le tri: "+ A );
}
Résultat
Avant le tri: [500 Amine, 300 Khalid, 400 Omar]
Après le tri: [300 Khalid, 400 Omar, 500 Amine]
POO \ N.EL FADDOULI
116
7
Téléchargement