Klíčový rozdíl – TreeSet vs HashSet
Většina programovacích jazyků podporuje pole. Jde o datovou strukturu, která se používá k uložení více prvků stejného datového typu. Pokud je pole deklarováno pro šest prvků, nelze jej použít k uložení deseti prvků. Pole proto nejsou dynamická a po deklaraci nemohou změnit velikost pole. Programovací jazyky, jako je Java, podporují kolekce, které se používají k dynamickému ukládání dat. Kolekce podporují operace, jako je přidávání prvků a odstraňování prvků. V hierarchii kolekce existuje řada rozhraní a tříd. Základním rozhraním je rozhraní kolekce. Set je rozhraní, které rozšiřuje rozhraní kolekce. Neumožňuje duplikaci. TreeSet a HashSet jsou dvě třídy v hierarchii kolekce a obě implementují rozhraní Set. TreeSet je třída, která implementuje rozhraní Set a používá se k ukládání jedinečných prvků ve vzestupném pořadí. HashSet je třída, která implementuje rozhraní Set a používá se k ukládání jedinečných prvků pomocí mechanismu hash. Klíčový rozdíl mezi TreeSet a HashSet je v tom, že TreeSet ukládá prvky ve vzestupném pořadí, zatímco HashSet neukládá prvky ve vzestupném pořadí. TreeSet i HashSet ukládají pouze jedinečné prvky.
Co je sada stromů?
Třída TreeSet implementuje rozhraní NavigableSet. Rozhraní NavigableSet rozšiřuje rozhraní SortedSet, Set, Collection a Iterable v hierarchickém pořadí. TreeSet vždy udržuje vzestupné pořadí. Pokud byly prvky vloženy v pořadí B, A, C, budou uloženy jako A, B, C. Metody jako add (), remove () lze použít s objektem TreeSet. K přidání prvku lze použít metodu add. Metoda remove se používá k odstranění prvku z kolekce. Toto jsou některé metody, které lze použít s TreeSet.
Obrázek 01: Program s TreeSet
Podle výše uvedeného programu je vytvořen objekt typu TreeSet. Datové prvky řetězce jsou k tomuto objektu přidány pomocí metody add. Pořadí vkládání dat je A, D, A, B, C, D. Pomocí iterátoru se uložené hodnoty vytisknou na obrazovku. Výstup je A, B, C, D. I když existují dvě písmena A a dvě písmena D, na výstupu se zobrazí každé jedno A a jedno D. Proto TreeSet ukládá jedinečné prvky. Neexistuje žádné konkrétní pořadí vkládání, ale při sledování výstupu je vidět, že sada stromů zachovává vzestupné pořadí prvků.
Co je HashSet?
Třída HashSet rozšiřuje třídu AbstractSet, která implementuje rozhraní Set. Rozhraní Set dědí rozhraní Collection a Iterable v hierarchickém pořadí. V HashSet neexistuje žádná záruka, že prvky zachovají vzestupné pořadí a vložené pořadí. Pokud byla vložená objednávka A, B, C, hodnoty by se mohly uložit jako C, A, B. Uložení objednávky může být také A, B, C, ale není zaručeno, že vložená objednávka nebo vzestupné pořadí bude zachováno.
Obrázek 02: Program s HashSet
Podle výše uvedeného programu je vytvořen objekt typu HashSet. Datové prvky řetězce jsou k tomuto objektu přidány pomocí metody add. Pořadí vkládání dat je L, R, M, M, R, L. Pomocí iterátoru se uložené hodnoty vytisknou na obrazovku. Výstup je R L M. I když jsou od každého dvě písmena L, R a M, zobrazí se pouze jedno písmeno od každého. HashSet proto ukládá jedinečné prvky. Při sledování výstupu je vidět, že neexistuje žádné vzestupné pořadí nebo je zachováno vložené pořadí.
Jaké jsou podobnosti mezi TreeSet a HashSet?
- TreeSet i HashSet jsou třídy patřící do hierarchie kolekcí.
- TreeSet i HashSet ukládají pouze jedinečné prvky.
- TreeSet i HashSet lze použít k ukládání a manipulaci s mnoha prvky.
- TreeSet i HashSet neudržují vloženou objednávku.
Jaký je rozdíl mezi TreeSet a HashSet?
TreeSet vs HashSet |
|
TreeSet je třída v hierarchii kolekce, která se používá k ukládání jedinečných prvků ve vzestupném pořadí. | HashSet je třída v hierarchii kolekce, která se používá k ukládání jedinečných prvků pomocí mechanismu hash. |
Ukládání prvků | |
Sada stromů ukládá prvky ve vzestupném pořadí. | HashSet neukládá prvky ve vzestupném pořadí. |
Shrnutí – TreeSet vs HashSet
Při programování je vyžadováno dynamické ukládání datových prvků. Programovací jazyky, jako je Java, podporují kolekce pro dosažení tohoto úkolu. V hierarchii kolekce existuje řada rozhraní a tříd. TreeSet a HashSet jsou dvě třídy v hierarchii kolekce. Oba implementují rozhraní Set. TreeSet je třída, která implementuje rozhraní Set a používá se k ukládání jedinečných prvků ve vzestupném pořadí. HashSet je třída, která implementuje rozhraní Set a používá se k ukládání jedinečných prvků pomocí mechanismu hash. Rozdíl mezi TreeSet a HashSet je ten, že TreeSet ukládá prvky ve vzestupném pořadí, zatímco HashSet neukládá prvky ve vzestupném pořadí. Tento článek pojednával o rozdílu mezi TreeSet a HashSet.