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:
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()); ...
}
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
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.
public Vector(int initialCapacity, int capacityIncrement) public Vector(int initialCapacity) public Vector()
Les méthodes
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
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:
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 .
Pour aller recher un élément dans cette table, on fera:
Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3));
Integer n = (Integer)numbers.get("two"); if (n != null) { System.out.println("two = " + n); }
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.
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:
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
public StringTokenizer(String str, String delim, boolean returnTokens) public StringTokenizer(String str, String delim) public StringTokenizer(String str)
"\t\n\r\f" et
returnTokens est à faux.
Les méthodes
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() }
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() }
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:
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() }