Précédent Suivant

java.util


Tableau
Vector
Stack
Hashtable
TreeSet et Comparator
Autres classes

Le package java.util contient beaucoup de structures de données que l'on peut aussi appeler collections. Avant peut être de rentrer dans java.util, voyons déjà comment on déclare et on utilise les tableaux.

Les tableaux
Déclaration : int[ ] tab ou int tab[ ]. Java est assez permissif de ce côté là, il permet plusieurs notations. Cependant, mieux vaut utiliser la première qui est beaucoup plus intuitive. Pour les tableaux à 2 dimensions : int[ ][ ] tab.
Instanciation : tab = new int[dim]. Le tableau est indicé de 0 à dim-1. Chaque élément du tableau est initialisé à 0 pour les primitives, null pour les Object et false pour les booléens.
La taille d'un tableau est fixe. Cependant, il n'est pas nécessaire de connaître la taille du tableau à la compilation. Une allocation dynamique peut très bien être faite.

Ecrire un programme qui met dans un tableau à deux dimensions la table de multiplication et qui l'affiche à l'écran.

Les vecteurs
La taille fixe des tableaux est un inconvénient mais ce choix a été fait pour des raisons d'efficacité. D'autres structures permettent cette gestion dynamique de la taille. Les vecteurs (java.util.Vector) présentent deux avantages : la taille dynamique et la possibilité d'y stocker des Object, c'est à dire n'importe quoi. Alors que les éléments d'un tableau devront tous être les mêmes, les éléments d'un vecteur pourront être différents. Pour les primitives, on utilisera les classes enveloppes (wrappers). Quelques méthodes de la classe Vector :
void addElement(Object obj)
void clear()
boolean contains(Object elem)
Object elementAt(int index)
int indexOf(Object elem)
void insertElementAt(Object obj, int index)

Utilisez la classe Animal déjà implémentée pour écrire un programme qui remplit un vecteur d'animaux et affiche le contenu à l'écran. Que remarquez vous ?

Les piles
Les piles (java.util.Stack) sont des structures qui permettent de gérer le mode LIFO ou Last In First Out. Les principales méthodes :
boolean empty()
Object peek()
Object pop()
Object push(Object item)

Ecrire un petit programme tout simple qui utilise une pile.

Les Hashtables
Les Hashtables (java.util.Hashtable) implémente la classe Map qui permet entre autres d'associer une clé à chaque élément. Cette clé nous permet de pointer directement sur l'élément associé. Quelques méthodes :
boolean contains(Object value)
Object get(Object key)
boolean isEmpty()
Object put(Object key, Object value)
Object remove(Object key)
int size()

Ecrire un programme qui utilise une Hashtable dans laquelle vous mettez des Animaux. Indexez ces animaux par leur nom.

Les TreeSet
Les TreeSet vont de pair avec les Comparateurs. Ils sont assimilables à des Vector sauf que les éléments le constituant sont classés. De même, les TreeMap sont assimilables à des Hashtables. Le classement des différents éléments est défini dans un comparateur (java.util.Comparator). La classe Comparator est une interface. Il faut donc créer notre propre comparateur qui implémente Comparator.

class Comparaison implements Comparator {
     int retval = 0;
    public int compare(Object o1, Object o2) {
         return (((Animal)o1).getName()).compareTo(((Animal)o2).getName());
     }
}

Quelques méthodes :
boolean add(Object o)
void clear()
Iterator iterator()
int size()

Ecrire un programme qui utilise un TreeSet d'animaux classé par ordre alphabétique de leur nom.

Les autres classes
Il y a plein d'autres classes dans java.util, mais leur usage est un peu plus ponctuel. La classe Calendar permet de gérer tout ce qui peut toucher aux dates et aux calendrier. C'est une classe abstraite dont la principale sous classe est GregorianCalendar, notre calendrier gregorien. On trouve aussi des utilitaires comme StringTokenizer qui sert à découper un texte en unité lexicale.


Précédent Suivant