Zawsze zastanawiałem się, jak zaimplementować zestaw w Javie. Czy możemy to zaimplementować tak, jak implementujemy HashMap za pomocą LinkedList i obiektu (Cell), który posiada klucz i wartość? Jak poradzisz sobie z częścią unikalności?Jak zaimplementować strukturę zbiorów danych w Javie?
5
A
Odpowiedz
5
2
Zasadniczo zestaw to tylko mapa, która zawiera tylko klucze. Powinieneś więc poinformować się o algorytmie mapowania. Uwaga: HashSet na przykład jest tak naprawdę tylko adapterem dla HashMap. metoda dodawania HashSet używa po prostu HashMap.put (value, SomeDummyValue).
1
Poniżej znajduje się fragment kodu, aby wyjaśnić powyżej odpowiedzi o
public HashSet() { map = new HashMap<>(); }
private transient HashMap<E,Object> map;
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
// Since PRESENT is a constant, for all keys we have same value in backup HashMap called map.
public Iterator<E> iterator() {
return map.keySet().iterator();
}