HashSet ou HashMap

helloword95 -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

Quelle est la différence entre HashSet et HashMap ? Pourquoi choisir l'un plutôt que l'autre? Quelle est la structure de donnée derrière c'est ensembles ?

Je suis assez perdu

Merci

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Un HashSet<E> est un Set<E> implémenté avec une table de hachage.
Une HashMap<K,V> est une Map<K,V> implémentée avec une table de hachage.

Donc la structure de donnée derrière est la même. D'autant plus que pour implémenter le HashSet c'est une HashMap qui sert de structure.

public class HashSet<E> extends AbstractSet<E>
    implements Set<E>, Cloneable, Serializable {

    private transient HashMap<E, Object> map;

    private static final Object PRESENT = new Object();

    public HashSet() {
        map = new HashMap<>();
    }

    public boolean add(E e) {
        return map.put(e, PRESENT) == null;
    }

    public boolean remove(Object o) {
        return map.remove(o) == PRESENT;
    }
0