Set: ensemble d’objets non indicé, sans doublon
List: ensemble d’objet indicés, avec éventuellement des doublons
Map: ensemble associatif d’objet, non indicé, chaque objet étant associé à une clef unique
Queue: ensemble d’objet non indicé avec un schéma d’accès de type LIFO/FIFO
En Java, ces 4 classes sont des interfaces. En pratique on utilise un HashSet, ArrayList, HashMap, ArrayDeque.
int size();
void clear();
boolean isEmpty();
HashSet:
Set<MaClasse> set = new Set<>();
// opérations
boolean add(E e): ajoute l'objet e de E. Si E n'est pas de la classe (ou
sous clase), cela renvoie une erreure de compilation. Sinon cela renvoie true.
boolean remove(Objet o): enlève o s'il existe et renvoie true, sinon renvoie false.
boolean contains(Objet o): renvoie true si l'objet o est dans la liste.
Iterator(E) iterator: retourne un interateur sur le seet.
public class A {}
public class B extends A {}
public class Prog {
Set<A> set = new Set<>();
A a = new A();
B b = new B();
Date d = new Date();
set.add(a); // OK
set.add(b); // OK
set.add(d); // ERR.
boolean rep;
rep = set.remove(a); // true
rep = set.contains(d); // false
rep = set.remove(d); // false
}
ArrayList
List<MaClasse> list = new ArrayList<>();
boolean add(E e): ajout en fin de liste
void add(int index, E e): insertion en index. Si index inf. 0 ou sup. size, alors exeception
E get(int index): renvoie l'élément en index s'il est valide
int indexof(Object o): renvoiei l'indice de o s'il existe
E remove(int index): supprime et renvoie l'objet en index (supprime et renvoie l'objet en index(s'il est valide)
HashMap
Tableau associatif
V put(K key, V value): ajoute/modifie un couple {clé, valeur}
V get(Object key): renvoie l'object associé à la clé si elle existe, null sinon
boolean containsKey(Object key): renvoie si la clef existe
boolean containsValue(Object value): renvoie si la valeur existe
V remove(Object key): supprime la valeur associé à la clef et la renvoie, sinon null
Set<K> keySet(): renvoie un set des clés
// Exemple
Map<String, A> map1 = new HashMap<>();
Map<A, Integer> map2 = new HashMap<>();
A a1 = new A(); A a2 = new A(); Date d = new Date();
map1.put("toto", a1); // Ok
map1.put("toto", a2); // Ok remplace a1 par a2
map1.put(a1, "tutu"); // Erreur de compilation
map2.put(a1, new Integer(10)); // Ok
map2.put(d, new Integer(5)); // Erreur de compil
map2.containsKey(d); // Renvoie false
map2.containsKey(a1); // Renvoie true