INF1563 Programmation I


Tableaux dynamiques


Classe Vector

Le tableau suivant présente quelques méthodes de la classe Vector

Informations sur l'état du vecteur
isEmpty() indique si le Vector est vide
size() renvoie le nombre d'éléments
elementAt(int) obtient un objet à partir de son indice
Opérations qui modifient l'état du vecteur
addElement(Object) ajoute un objet à la fin du Vector
insertElementAt(Object, int) insère l'objet à l'indice indiqué
removeElementAt(int) retire l'objet dont l'indice est donné
removeAllElements() vide le Vector
setElementAt(Object, int) place l'objet à l'indice donné

Exemple :

Vector vec = new Vector();

vec.add ("premier élément ajouté");
vec.add ("second élément ajouté");
vec.insertElementAt(new Integer(3), 1); // insérer à la position 1
System.out.println (vec);
String ch = (String)vec.elementAt(0);  // casting nécessaire

Résultats :

[premier élément ajouté, 3, second élément ajouté]

Classe ArrayList

La classe ArrayList est une version améliorée de la classe Vector. Elle est optimisé pour des opérations d'ajout/suppression d'éléments en fin de liste.

Comparaison de Vector et ArrayList

Comparons les définitions des deux classes :

public class ArrayList<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable
La classe AbstractList est définie comme suit :
public abstract class AbstractList<E>
extends AbstractCollection<E>
implements List<E>

Examinons les méthodes disponibles dans les trois classes.

Exercice de fin de session

Le fichier blablabla.txt contient plusieurs lignes de texte. Vous devez trier toutes ces lignes dans l'ordre croissant. Utilisez la classe ArrayList.

import java.util.ArrayList;
import javax.swing.*;
import java.io.*;

public class TriArrayList {

  ...

  public static void imprimer(ArrayList a){
    ...
  }

  public static void main(String args[]){
    try {
      JFileChooser dial = new JFileChooser();
      int res = dial.showOpenDialog(null);
      if (res == JFileChooser.APPROVE_OPTION) {
        File f = dial.getSelectedFile();
        InputStream is = new FileInputStream(f);
        Reader r = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(r);
        String ligne = br.readLine();
        ...
        is.close();
      }
    } catch (IOException e) {
      System.err.println("Problème de lecture du fichier blablabla.txt");
    }
    tri(arr);
    imprimer(arr);
  }
}