HashSet ou HashMap

Fermé
helloword95 - 18 avril 2017 à 02:04
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 18 avril 2017 à 07:14
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 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
18 avril 2017 à 07:14
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