TP sur les collections

Page Home (contact) Retour TPs

Support de cours


Collections et itérateurs, interfaces, tris

  1. Ajoutez une méthode iterEmployes dans la classe Entreprise (utilisez aussi cette classe Employe), qui renvoie un itérateur pour obtenir tous les employés de l'entreprise. Dans la méthode main de la classe TestEntreprise, utilisez cet itérateur pour calculer le total des salaires des employés de chacune des 2 entreprises.
  2. Faites les modifications pour qu'on puisse parcourir tous les employés d'une entreprise avec une boucle "for-each" : "for (Employe employe : entreprise) ...". Testez dans TestEntreprise en utilisant une boucle for-each pour calculer le total des salaires d'une des entreprises.
  3. Toujours dans la méthode main, faites afficher les noms des employés de l'une des entreprises, par ordre alphabétique de leur nom. Pour cela, vous modifierez la classe Employe pour qu'elle implémente l'interface Comparable. Vous donnerez l'ordre alphabétique comme ordre "naturel" des employés. Dans la méthode main vous copierez tous les employés dans une liste que vous trierez (vous utiliserez la classe Collections).
  4. Faites afficher les noms et salaires des employés de l'une des entreprises, classés par salaire décroissant, puis par salaire croissant. Pour cela,
    1. créez une classe qui implémente l'interface Comparator pour comparer les employés par leur salaire,
    2. dans la méthode main, ajoutez tous les employés dans une liste des employés de l'entreprise et triez la liste avec ce comparateur.
  5. Faites afficher par ordre alphabétique les noms des employés des 2 entreprises réunies.

Correction :

Question 1
Question 2
Question 3
Question 4
Question 5


Une "base de données" d'articles

On part de l'exercice sur les articles vendus dans un commerce.

Dans un "vrai" commerce, les caractéristiques des articles seraient conservées dans une base de données. En attendant de savoir comment travailler en Java avec une base de données, vous allez enregistrer les articles dans une table de hachage (HashMap) dont les clés seront les références des articles ; tout article du magasin a une référence qui l'identifie parmi les autres articles. Ensuite, les articles ne sont plus désignés que par leur référence. Leurs caractéristiques (par exemple, leur prix unitaire), sont ensuite automatiquement récupérés depuis la table de hachage.

Ecrivez le code correspondant. Comme pour les autres TPs, créez un nouveau projet pour cet exercice. Vous garderez ainsi l'ancienne version sans "base de données".

Si vous le souhaitez, vous pouvez utiliser cette classe TestFacture.

Correction :

Toutes les classes

Une colle

Voici une classe et une autre classe pour tester la première classe.

  1. Lancez le test. Pourquoi le fonctionnement est anormal ?
  2. Modifiez le code pour rétablir un fonctionnement normal.

Correction :

Les classes


Itérateur

Dans la classe Etagere de cet exercice, ajoutez une méthode iterator qui renvoie un itérateur qui parcourt les livres d'une étagère.

La classe de l'itérateur sera une classe interne. Pour commencer implémentez seulement les fonctionnalités de base des méthodes hasNext et next de l'itérateur renvoyé et écrivez une méthode remove qui lève une NoSuchOperationException. Si vous avez le temps, implémentez une méthode remove opérationnelle et la gestion des exceptions NoSuchElementException, IllegalStateException et ConcurrentModificationException (voir javadoc de Iterator et de ConcurrentModificationException).

Correction :

Etagere.java


Pour ceux qui ont déjà fini...

Si vous voulez en savoir plus sur les collections, lisez le tutoriel d'Oracle à l'adresse http://download.oracle.com/javase/tutorial/collections/index.html


Retour TPs