Kluczowa różnica – TreeSet vs HashSet
Większość języków programowania obsługuje tablice. Jest to struktura danych używana do przechowywania wielu elementów tego samego typu danych. Jeśli istnieje tablica zadeklarowana dla sześciu elementów, nie można jej użyć do przechowywania dziesięciu elementów. Dlatego tablice nie są dynamiczne i nie mogą zmieniać rozmiaru tablicy po jej zadeklarowaniu. Języki programowania, takie jak Java, obsługują kolekcje używane do dynamicznego przechowywania danych. Kolekcje obsługują operacje, takie jak dodawanie i usuwanie elementów. W hierarchii kolekcji istnieje wiele interfejsów i klas. Podstawowym interfejsem jest interfejs kolekcji. Set to interfejs rozszerzający interfejs Collection. Nie pozwala na powielanie. TreeSet i HashSet to dwie klasy w hierarchii kolekcji i obie implementują interfejs Set. TreeSet to klasa, która implementuje interfejs Set i służy do przechowywania unikalnych elementów w kolejności rosnącej. HashSet to klasa implementująca interfejs Set i służy do przechowywania unikalnych elementów za pomocą mechanizmu Hashing. Kluczową różnicą między TreeSet i HashSet jest to, że TreeSet przechowuje elementy w kolejności rosnącej, podczas gdy HashSet nie przechowuje elementów w kolejności rosnącej. Zarówno TreeSet, jak i HashSet przechowują tylko unikalne elementy.
Co to jest zestaw drzew?
TreeSet klasa implementuje interfejs NavigableSet. Interfejs NavigableSet rozszerza interfejsy SortedSet, Set, Collection i Iterable w porządku hierarchicznym. TreeSet zawsze zachowuje kolejność rosnącą. Jeśli elementy zostały wstawione w kolejności B, A, C, zostaną zapisane jako A, B, C. Metody takie jak add(), remove() mogą być używane z obiektem TreeSet. Do dodania elementu można użyć metody add. Metoda remove służy do usuwania elementu z kolekcji. Oto kilka metod, których można używać z TreeSet.
Rysunek 01: Program z TreeSet
Zgodnie z powyższym programem tworzony jest obiekt typu TreeSet. Elementy danych ciągu są dodawane do tego obiektu za pomocą metody add. Kolejność wstawiania danych to A, D, A, B, C, D. Za pomocą iteratora zapisane wartości są drukowane na ekranie. Dane wyjściowe to A, B, C, D. Mimo że istnieją dwie litery A i dwie litery D, na wyjściu wyświetlana jest jedna litera A i jedna litera D. Dlatego TreeSet przechowuje unikalne elementy. Nie ma określonej kolejności wstawiania, ale obserwując dane wyjściowe, można zauważyć, że TreeSet zachowuje rosnącą kolejność elementów.
Co to jest HashSet?
Klasa HashSet rozszerza klasę AbstractSet, która implementuje interfejs Set. Interfejs Set dziedziczy interfejsy Collection i Iterable w kolejności hierarchicznej. W HashSet nie ma gwarancji, że elementy utrzymają kolejność rosnącą i wstawioną kolejność. Jeśli wstawiona kolejność to A, B, C, wartości mogą być przechowywane jako C, A, B. Kolejność przechowywania może być również A, B, C, ale nie ma gwarancji, że wstawiona kolejność lub kolejność rosnąca zostanie zachowana.
Rysunek 02: Program z HashSet
Zgodnie z powyższym programem tworzony jest obiekt typu HashSet. Elementy danych ciągu są dodawane do tego obiektu za pomocą metody add. Kolejność wstawiania danych to L, R, M, M, R, L. Za pomocą iteratora zapisane wartości są drukowane na ekranie. Dane wyjściowe to R L M. Mimo że z każdej z nich są dwie litery L, R i M, wyświetlana jest tylko jedna litera z każdej. Dlatego HashSet przechowuje unikalne elementy. Obserwując dane wyjściowe, można zauważyć, że nie ma kolejności rosnącej lub wstawiona kolejność jest zachowana.
Jakie są podobieństwa między TreeSet i HashSet?
- Zarówno TreeSet, jak i HashSet są klasami należącymi do hierarchii kolekcji.
- Zarówno TreeSet, jak i HashSet przechowują tylko unikalne elementy.
- Zarówno TreeSet, jak i HashSet mogą być używane do przechowywania i manipulowania wieloma elementami.
- Zarówno TreeSet, jak i HashSet nie zachowują wstawionej kolejności.
Jaka jest różnica między TreeSet a HashSet?
TreeSet vs HashSet |
|
TreeSet to klasa w hierarchii kolekcji, która służy do przechowywania unikalnych elementów w porządku rosnącym. | HashSet to klasa w hierarchii kolekcji, która służy do przechowywania unikalnych elementów za pomocą mechanizmu haszującego. |
Przechowywanie elementów | |
TreeSet przechowuje elementy w porządku rosnącym. | HashSet nie przechowuje elementów w porządku rosnącym. |
Podsumowanie – TreeSet vs HashSet
W programowaniu wymagane jest dynamiczne przechowywanie elementów danych. Języki programowania, takie jak Java, obsługują kolekcje, aby osiągnąć to zadanie. W hierarchii kolekcji istnieje wiele interfejsów i klas. TreeSet i HashSet to dwie klasy w hierarchii kolekcji. Oba implementują interfejs Set. TreeSet to klasa, która implementuje interfejs Set i służy do przechowywania unikalnych elementów w kolejności rosnącej. HashSet to klasa implementująca interfejs Set i służy do przechowywania unikalnych elementów za pomocą mechanizmu Hashing. Różnica między TreeSet i HashSet polega na tym, że TreeSet przechowuje elementy w kolejności rosnącej, podczas gdy HashSet nie przechowuje elementów w kolejności rosnącej. W tym artykule omówiono różnicę między TreeSet i HashSet.