In dit artikel gaan we de verschillen tussen HashSet- en HashMap- klassen bespreken.
HashSet versus HashMap
verschillen:
HashSet | Hash kaart |
---|---|
De klasse HashSet implementeert de Set-interface | De klasse HashMap implementeert de kaartinterface |
In HashSet slaan we objecten (elementen of waarden) op, bijv. Als we een HashSet van stringelementen hebben, kan deze een set HashSet-elementen weergeven: {"Hallo", "Hallo", "Dag", "Uitvoeren"} | HashMap wordt gebruikt voor het opslaan van sleutel- en waardeparen. Kort gezegd blijft de toewijzing van sleutel en waarde behouden (de klasse HashMap is ongeveer gelijk aan Hashtable, behalve dat deze niet gesynchroniseerd is en nulls toestaat.) Zo kunt u HashMap-elementen voorstellen als deze een geheeltallige sleutel en waarde van het type String heeft: bijv. {1 -> "Hallo", 2 -> "Hallo", 3 -> "Dag", 4 -> "Uitvoeren"} |
HashSet staat geen dubbele elementen toe, wat betekent dat u geen dubbele waarden kunt opslaan in HashSet. | HashMap staat geen dubbele sleutels toe, maar het staat dubbele waarden toe. |
HashSet staat toe om een enkele nulwaarde te hebben. | HashMap staat één nulsleutel en een willekeurig aantal nulwaarden toe. |
overeenkomsten:
1) Zowel HashMap als HashSet zijn niet gesynchroniseerd, wat betekent dat ze niet geschikt zijn voor thread-safe operaties, tenzij expliciet gesynchroniseerd. Dit is hoe je ze expliciet kunt synchroniseren:
HashSet:
Set s = Collections.synchronizedSet (nieuwe HashSet (...));
Hash kaart:
Map m = Collections.synchronizedMap (nieuwe HashMap (...));
2) Beide klassen garanderen niet dat de volgorde van hun elementen in de loop van de tijd constant blijft.
3) Als u naar de broncode van HashSet kijkt, kan het zijn dat deze wordt ondersteund door een HashMap. Dus eigenlijk gebruikt het intern een HashMap voor al zijn activiteiten.
4) Ze bieden beide constante tijdprestaties voor basisbewerkingen zoals het toevoegen, verwijderen van elementen enz.
HashSet-voorbeeld
java.util.HashSet importeren; class HashSetDemo {public static void main (String [] args) { // Maak een HashSet HashSet <String> hset = new HashSet <String> (); // elementen toevoegen aan HashSet hset.add ( "AA"); hset.add ( "BB"); hset.add ( "CC"); hset.add ( "DD"); // HashSet-elementen weergeven System.out.println ("HashSet bevat:"); voor (String temp: hset) { System.out.println (temp); } } }
Output:
HashSet bevat: AA BB CC DD
HashMap-voorbeeld
java.util.HashMap importeren; class HashMapDemo {public static void main (String [] args) { // Maak een HashMap HashMap <Integer, String> hmap = new HashMap <Integer, String> (); // elementen toevoegen aan HashMap hmap.put (1, "AA"); hmap.put (2, "BB"); hmap.put (3, "CC"); hmap.put (4, "DD"); // HashMap-elementen weergeven System.out.println ("HashMap bevat:" + hmap); } }
Output:
HashMap bevat: {1 = AA, 2 = BB, 3 = CC, 4 = DD}
Uitstekende beschrijving. Prachtige website met voorbeelden.
Hoe gebruikt HashSet intern de HashMap?