Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Développement informatique
  3. Les collections
Extrait - Développement informatique Apprenez à concevoir avant de programmer
Extraits du livre
Développement informatique Apprenez à concevoir avant de programmer
3 avis
Revenir à la page d'achat du livre

Les collections

Objectifs du chapitre

Développer des applications utilisant des collections.

Dans les exemples de ce chapitre, nous nous limiterons à l’utilisation des classes Vector et ArrayList. Nous rencontrerons d’autres collections dans les chapitres suivants.

Introduction

1. Définition

Les collections, comme les tableaux, permettent de stocker plusieurs éléments du même type.

Contrairement au tableau, dont la taille est fixée lors de l’instanciation, une collection peut changer de taille dynamiquement. Par contre, elle ne peut stocker que des références d’objets (pas d’éléments de type primitif : int, float…).

Cette limitation n’est pas vraiment gênante. Pour une liste d’entiers, on peut stocker une liste d’objets de type Integer. À chaque type primitif correspond une classe (dite enveloppeur) : Float pour float, Double pour double, Character pour char...

2. Hiérarchie partielle des collections

Une collection est une classe qui implémente l’interface Collection.

Voici un extrait de la hiérarchie des collections :

images/02072a.png

Les classes ArrayList et Vector sont des collections. Elles héritent de la classe abstraite AbstractList qui implémente l’interface List, elle-même héritière de l’interface Collection. Toutes ces classes et interfaces sont dans le package java.util.

Toutes les méthodes définies dans les interfaces List et Collection sont donc disponibles dans les deux classes.

Toutes les applications de ce chapitre peuvent être programmées avec l’une ou l’autre classe (les appels de méthodes...

Exemples d’utilisation de collections

1. ArrayList de String


public class ArrayListString 
{ 
    public static void main(String argv[]) 
    { 
        int i;
 

Création d’une liste destinée à contenir des références d’objets String. La collection est pour l’instant vide :


        ArrayList<String> listeString = new ArrayList<String>();
 

La chaîne <String> placée après ArrayList précise que la collection ne peut contenir que des objets de type String (ou d’une classe héritière de String). Avant la version 5 de Java, les collections n’étaient pas typées. On pouvait y ajouter n’importe quel type d’objet. Cette syntaxe est encore acceptée, malgré quelques ’warnings’.

La méthode add() ajoute un poste à la collection :


        listeString.add("Oie bernache"); 
        listeString.add("Moineau"); 
        listeString.add("Vautour");
 
images/02073a.png

Toute tentative d’ajout d’un objet qui n’est pas du type String est rejetée par le compilateur :

images/02073b.png

Affichage des chaînes stockées dans l’ArrayList :

  • La méthode size() retourne la taille de l’ArrayList (le nombre de chaînes...

Travail pratique : Voitures (avec collections)

1. Objectif

L’objectif est de reprendre l’application TP Voiture du chapitre Les tableaux, en remplaçant les tableaux par des collections (ArrayList).

2. Sujet

Reprendre le TP Voitures.

  • Utiliser une ArrayList de vendeurs, initialisée dans la méthode main().

  • Utiliser une ArrayList de voitures, initialisée de manière conversationnelle en entrant au clavier le nombre de voitures à créer, puis pour chaque voiture, le numéro de moteur (ou 0 pour une affectation automatique), et le nom du vendeur.

3. Voitures (avec collections de type ArrayList) : proposition de correction

Seule la classe TestVoiture doit être modifiée :


public class TestVoiture 
{ 
    public static void main(String argv[]) throws IOException 
    { 
        Garage g1, g2; 
        ArrayList<Vendeur> listeVendeurs;   // Liste de vendeurs 
        ArrayList<Voiture> listeVoitures;   // Liste de voitures 
        int iVoiture;                       // Indices 
        int iVendeur; 
       ...