IFT 1170, automne 2006 Chapitre 7 : Vecteurs
(par Le Van N., révisé pour JDK 1.5 par M. Reid)
102
Vecteurs
Java fournit la classe Vector dans sont package java.util
Un objet de la classe Vector est similaire à un tableau puisqu’il
permet de stocker plusieurs valeurs.
Contrairement aux tableaux, un Vector ne requiert pas la manipulation
d’indices pour gérer ses éléments. Cette gestion se fait à travers les
méthodes de cette classe.
A) Pourquoi ?
1. C'est une classe, donc on peut profiter de
ses méthodes au lieu de tout programmer
comme le cas des tableaux d'objets;
2. Son nombre d'éléments varie dépendant de la
méthode appliquée (ajouter, insérer,
supprimer, . . .);
3. Méthodes assez générales pour des objets de
natures différentes (ajouter un nouvel
élément, chercher un élément, modifier le
contenu d'un élément, supprimer, …).
B) Comment ?
public class Vector <E>
extends AbstractList <E> // sous-classe de …. (notion d’héritage)
implements List <E>, Cloneable, Serializable // notion
d’interface
1. À importer :
import java.util.*;
2. Déclaration et (1 manière de) construction
IFT 1170, automne 2006 Chapitre 7 : Vecteurs
(par Le Van N., révisé pour JDK 1.5 par M. Reid)
103
Vector <Cercle> cercle = new Vector<Cercle> ();
Vector<Employe> employe = new Vector<Employe>();
Vector<Pays> pays = new Vector<Pays> ();
On n'a pas déclaré la taille du vecteur,
par contre, depuis JDK 1.5, on doit déclarer le type des éléments.
Avec ces déclarations :
cercle est un vecteur vide (pas d'éléments),
sa taille vaut zéro :
cercle.size() vaut 0
pays est un vecteur vide (d'éléments) sa taille
vaut zéro :
pays.size() vaut 0
etc. . .
3. Ajout d'un nouvel élément :
Cercle c1 = new Cercle(1.5),
c2 = new Cercle(4.2);
c1
c2
cercle.addElement(c1);
cercle.addElement(c2);
Après ces 2 ajouts : cercle.size() vaut 2
4. Accès à un élément :
Cercle c = (Cercle) cercle.elementAt(1);
1.5
4.2
IFT 1170, automne 2006 Chapitre 7 : Vecteurs
(par Le Van N., révisé pour JDK 1.5 par M. Reid)
104
La méthode elementAt(k) retourne un objet
(du même type que les éléments) :
Si un a un vecteur "pays" de 125 nations,
l'affectation :
Nation p = pays.elementAt(99);
permet d'affecter à p le 100ième pays du
vecteur. Notez que l'accès via indice
n'est pas permis avec un vecteur :
pays[99] n'est pas valide.
5. Modifier un élément (utile pour le tri)
Supposons qu'on dispose d'un vecteur de 12
cercles.
Cercle nouvCercle = new Cercle(7.7);
cercle.setElementAt(nouvCercle, 6);
nouvCercle
La deuxième ligne mémorise le nouveau
cercle dans le vecteur à l'indice 6.
6. Insertion un élément :
Supposons qu'on dispose d'un vecteur de 12 cercles.
Cercle nouvCercle = new Cercle(10.4);
cercle.insertElementAt(nouvCercle, 10);
nouvCercle
Le nouveau cercle prend sa place à
7.7
10.4
IFT 1170, automne 2006 Chapitre 7 : Vecteurs
(par Le Van N., révisé pour JDK 1.5 par M. Reid)
105
l'indice 10 et pousse les deux autres
vers le bas du vecteur. La taille devient
13.
7. Suppression :
public final boolean removeElement (E obj);
Si l'objet est un élément du vecteur :
. supprimer la première occurrence
. déplacer certains éléments vers le
haut
. décrémente la taille du vecteur
. retourne true
Si non :
. retourne false
public final void removeElementAt(int indice);
Supprimer l'élément à l'indice spécifié s'il existe et
faire des ajustements en conséquence.
public final void removeAllElements();
Retirer tous les élements et mettre sa taille à 0
8. Recherche :
public final int indexOf (E obj);
retourne l'indice de la première
occurrence de l’élément trouvé (-1
si non trouvé)
public final int lastIndexOf (E obj);
retourne l'indice de la dernière occurrence de
l’élément trouvé (-1 si non trouvé)
public final boolean contains (E obj);
retourne true si l’élément donné est
un élément de ce vecteur (false
sinon).
9. Conversion en chaîne de caractères :
IFT 1170, automne 2006 Chapitre 7 : Vecteurs
(par Le Van N., révisé pour JDK 1.5 par M. Reid)
106
public String toString()
retourne une chaîne représentant le vecteur.
10. Tester si le vecteur est vide :
public boolean isEmpty()
Les informations plus complètes se trouvent au
lien :
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Vector.html
Exemple 1:
import java.util.Vector;
public class Beatles
{
public static void main (String[] args)
{
Vector<String> band = new Vector<String>();
band.addElement ("Paul");
band.addElement ("Pete");
band.addElement ("John");
band.addElement ("George");
System.out.println (band);
band.removeElement ("Pete");
System.out.println (band);
System.out.println ("A la position 1: " + band.elementAt(1));
band.insertElementAt ("Ringo", 2);
System.out.println (band);
System.out.println ("Taille du groupe: " + band.size());
}
}
Efficacité des vecteurs :
Une différence importante entre les tableaux et les vecteurs est que
ces derniers gèrent implicitement leurs taille, celle-ci peut changer
automatiquement leur de l’exécution du programme s’il manque de place
pour un nouvel élément.
Par contre, l’implémentation de la classe Vector utilise
(implicitement) un tableau. Lorsque nous insérons un nouvel élément
ailleurs qu’à la fin, tous ceux qui le suivront seront d’abord décalés,
un à un, d’une position dans le vecteur, ce qui ralenti l’exécution du
programme.
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !