next up previous contents index
Next: 17 Les types Up: Java: Le langage Previous: 15 La hiérarchie des

Subsections

16 Le package java.util

Java , comme tout langage de programmation orienté objets, offre un certain nombre de classes et interfaces utiles au programmeur. L'ensemble de ces classes et interfaces sont regroupés dans le package java.util. La version de jdk1.1 fournit:


Les Classes:  
BitSet:  
Calendar:  
Date:  
Dictionary:  
EventObject:  
GregorianCalendar:  
Hashtable:  
ListResourceBundle:  
Locale:  
Observable:  
Properties:  
PropertyResourceBundle:  
Random:  
ResourceBundle:  
SimpleTimeZone:  
Stack:  
StringTokenizer:  
TimeZone:  
Vector:  


Les interfaces:  
Enumeration:  
EventListener:  
Iterator:  


16.1 L'interface Enumeration

La plupart des classes utilisent l'interface Enumeration pour itérer sur les éléments d'une suite.

 

   public Interface Enumeration {
      public abstract boolean hasMoreElements()
      public abstract Object nextElement()
   }

Ainsi, si l'on définit un nouveau type de données comme une vecteur, une suite, etc., on implantera cette interface pour permettre de balayer les éléments de cette nouvelle structure de données.

Voici une utilisation type des instance de classes qui implantent l'interface Enumeration:

 
Enumeration e = vecteur.elements();
while (e.hasMoreElements()) {
        x = e.nextElement());
        ...
}

Rien ne garantit l'ordre dans lequel les éléments sont fournis; tout ce dont dont est sûr, c'est que tous les éléments seront fournis dans un ordre non prévisible. De plus, il n'est pas possible, avec cette interface, de revenir en arrière. Les éléments sont fournis une et une seule fois.

 
Enumeration e = vecteur.elements();
while (e.hasMoreElements()) {
        x = e.nextElement());
        ...
}

Enumeration e = vecteur.elements(); while (e.hasMoreElements()) { y = e.nextElement()); ...

}

16.2 La classe Vector

Les instances de la classe Vector sont des tableaux qui est automatiquement agrandis en fonctions des besoins.

 

   public class Vector implements Cloneable, Serializable {
      protected Object elementData[]
      protected int elementCount
      protected int capacityIncrement

      public Vector(int initialCapacity, int capacityIncrement)
      public Vector(int initialCapacity)
      public Vector()
      public final synchronized void copyInto(Object anArray[])
      public final synchronized void trimToSize()
      public final synchronized void ensureCapacity(int minCapacity)
      public final synchronized void setSize(int newSize)
      public final int capacity()
      public final int size()
      public final boolean isEmpty()
      public final synchronized Enumeration elements()
      public final boolean contains(Object elem)
      public final int indexOf(Object elem)
      public final synchronized int indexOf(Object elem, int index)
      public final int lastIndexOf(Object elem)
      public final synchronized int lastIndexOf(Object elem, int index)
      public final synchronized Object elementAt(int index)
      public final synchronized Object firstElement()
      public final synchronized Object lastElement()
      public final synchronized void setElementAt(Object obj, int index)
      public final synchronized void removeElementAt(int index)
      public final synchronized void insertElementAt(Object obj, int index)
      public final synchronized void addElement(Object obj)
      public final synchronized boolean removeElement(Object obj)
      public final synchronized void removeAllElements()
      public synchronized Object clone()
      public final synchronized String toString()
   }

Les variables membres de cette classe sont

La classe Vector fournit trois constructeurs

 
public Vector(int initialCapacity, int capacityIncrement)
public Vector(int initialCapacity)
public Vector()
où initialCapacity est la taille initiale du tableau et capacityIncrement est le taux croissance du tableau. Le troisième constructeur crée un vecteur avec deux valeurs par défaut.

Les méthodes

16.3 La classe Stack

Sous classe de la classe Vector, la classe Stack implante les piles (listes LIFO).

 

   public class Stack extends Vector
      public Stack()
      public Object push(Object item)
      public synchronized Object pop()
      public synchronized Object peek()
      public boolean empty()
      public synchronized int search(Object o)
   }

Cette classe fournit

16.4 La classe Dictionary

C'est une classe abstraite qui permet d'implanter les tableaux associatifs.

 

   public abstract class Dictionary {
      public Dictionary()
      public abstract int size()
      public abstract boolean isEmpty()
      public abstract Enumeration keys()
      public abstract Enumeration elements()
      public abstract Object get(Object key)
      public abstract Object put(Object key, Object value)
      public abstract Object remove(Object key)
   }

Vous l'aurez remarquer, cette classe ressemble plutôt à une interface qu'à une classe abstraite.

Les sous classes de Dictionary doivent implanter les méthodes:

16.5 La classe Hashtable

Sous classe de la classe Dictionary, la table de hachage est une manière de stocker des couple (clé, valeur). Dans une table de hachage, les objets utilisés comme clé doivent implanter les méthodes hoshCode et equals. En effet, un facteur important d'efficacité des tables de hachage est la génération des codes de hachage pour les clés.

 
   public class Hashtable extends Dictionary implements Cloneable, Serializable {
      public Hashtable(int initialCapacity, float loadFactor)
      public Hashtable(int initialCapacity)
      public Hashtable()
      public int size()
      public boolean isEmpty()
      public synchronized Enumeration keys()
      public synchronized Enumeration elements()
      public synchronized boolean contains(Object value)
      public synchronized boolean containsKey(Object key)
      public synchronized Object get(Object key)
      protected void rehash()
      public synchronized Object put(Object key, Object value)
      public synchronized Object remove(Object key)
      public synchronized void clear()
      public synchronized Object clone()
      public synchronized String toString()
   }

Une table de hachage est redimensionnée lorsque le rapport du nombre d'éléments dans la table sur la capacité totale de la table dépasse une certaine valeur qu'on appelle facteur de charge .

La classe Hashtable définit trois constructeurs:

Outre les méthodes définies dans la classe Dictionary, la classe Hastable définit les méthodes:

Voici une exemple d'utilisation que l'on trouve dans la documentation de jdk .

 
     Hashtable numbers = new Hashtable();
     numbers.put("one", new Integer(1));
     numbers.put("two", new Integer(2));
     numbers.put("three", new Integer(3));
Pour aller recher un élément dans cette table, on fera:
 
     Integer n = (Integer)numbers.get("two");
     if (n != null) { System.out.println("two = " + n); }

16.6 La classe Properties

16.7 La classe BitSet

La classe BitSet permet de manipuler des vecteurs de bits; vecteurs redimensionable.

 

   public final class BitSet implements Cloneable, Serializable {
      public BitSet()
      public BitSet(int nbits)
      public void set(int bit)
      public void clear(int bit)
      public boolean get(int bit)
      public void and(BitSet set)
      public void or(BitSet set)
      public void xor(BitSet set)
      public int hashCode()
      public int size()
      public boolean equals(Object obj)
      public Object clone()
      public String toString()
   }

Les noms des méthodes sont assez explicites et il n'y a donc pas besoin de commenter cette classe.

16.8 La classe StringTokenizer

Cette classe fournit les outils pour décomposer une chaîne de caractères en unité lexicale. Contrairement à la classe StreamTokenizer, StringTokenizer ignore tout de la syntaxe des nombres, des identificateurs, des chaînes, commentaires, etc.

A la création d'une instance d'un StringTokenizer, un ensemble de délimiteurs est défini qui permet de découper une chaîne de caractères en unité lexicale.

 

   public class StringTokenizer implements Enumeration {
      public StringTokenizer(String str, String delim, boolean returnTokens)
      public StringTokenizer(String str, String delim)
      public StringTokenizer(String str)
      public boolean hasMoreTokens()
      public String nextToken()
      public String nextToken(String delim)
      public boolean hasMoreElements()
      public Object nextElement()
      public int countTokens()
   }

Cette classe possède trois constructeurs:

 
      public StringTokenizer(String str, String delim, boolean returnTokens)
      public StringTokenizer(String str, String delim)
      public StringTokenizer(String str)
str est la chaîne à découper en unité lexicale, delim est l'ensemble des délimiteurs et le boolean returnTokens à vrai rend également les délimiteurs comme unité lexicale. Par défaut, delim est définie par la chaîne "\t\n\r\f" et returnTokens est à faux.

Les méthodes

16.9 La classe Random

 

   public class Random implements Serializable {
      public Random()
      public Random(long seed)
      public synchronized void setSeed(long seed)
      protected synchronized int next(int bits)
      public void nextBytes(byte bytes[])
      public int nextInt()
      public long nextLong()
      public float nextFloat()
      public double nextDouble()
      public synchronized double nextGaussian()
   }

16.10 La classe Date

 

   public class Date {
      public Date()
      public Date(long date)
      public Date(int year, int month, int date)
      public Date(int year, int month, int date, int hrs, int min)
      public Date(int year, int month, int date, int hrs, int min, int sec)
      public Date(String s)
      public static long UTC(int year, int month, int date, int hrs, int min, int sec)
      public static long parse(String s)
      public int getYear()
      public void setYear(int year)
      public int getMonth()
      public void setMonth(int month)
      public int getDate()
      public void setDate(int date)
      public int getDay()
      public int getHours()
      public void setHours(int hours)
      public int getMinutes()
      public void setMinutes(int minutes)
      public int getSeconds()
      public void setSeconds(int seconds)
      public long getTime()
      public void setTime(long time)
      public boolean before(Date when)
      public boolean after(Date when)
      public boolean equals(Object obj)
      public int compareTo(Date anotherDate)
      public int compareTo(Object o)
      public int hashCode()
      public String toString()
      public String toLocaleString()
      public String toGMTString()
      public int getTimezoneOffset()
   }

16.11 Le package java.util jdk 1.2

La version de jdk1.2Beta3 fournit:


Les Classes:  
ArrayList:  
Arrays:  
BitSet:  
Calendar:  
Collections:  
Date:  
Dictionary:  
EventObject:  
GregorianCalendar:  
HashMap:  
HashSet:  
Hashtable:  
LinkedList:  
ListResourceBundle:  
Locale:  
Observable:  
Properties:  
PropertyPermission:  
PropertyResourceBundle:  
Random:  
ResourceBundle:  
SimpleTimeZone:  
Stack:  
StringTokenizer:  
TimeZone:  
TreeMap:  
TreeSet:  
Vector:  


Les interfaces:  
Collection:  
Comparator:  
Enumeration:  
EventListener:  
Iterator:  
List:  
ListIterator:  
Map:  
Observer:  
Set:  
SortedMap:  
SortedSet:  


16.12 L'interface Collection

 

   public interface Collection {
      public int size()
      public boolean isEmpty()
      public boolean contains(Object o)
      public Iterator iterator()
      public Object[] toArray()
      public Object[] toArray(Object[] a)
      public boolean add(Object o)
      public boolean remove(Object o)
      public boolean containsAll(Collection c)
      public boolean addAll(Collection c)
      public boolean removeAll(Collection c)
      public boolean retainAll(Collection c)
      public void clear()
      public boolean equals(Object o)
      public int hashCode()
   }

16.13 La classe ArrayList

 

16.14 La classe Arrays

 

16.15 La classe LinkedList

 

16.16 La classe Collections

 

16.17 L'interface List

16.18 L'interface ListIterator


next up previous contents index
Next: 17 Les types Up: Java: Le langage Previous: 15 La hiérarchie des
Touraivane
6/12/1998