HashSet ou HashMap

helloword95 -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   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