HashSet- ja HashMap-luokkien ero
Tässä artikkelissa käsittelemme HashSet- ja HashMap-luokkien välisiä eroja.
HashSet vs HashMap
Eroja:
HashSet | HashMap |
---|---|
HashSet-luokka toteuttaa Set-rajapinnan | HashMap-luokka toteuttaa Map-rajapinnan |
HashSet-luokassa tallennetaan objekteja(elementtejä tai arvoja) esim.Esim. jos meillä on HashSet merkkijonoelementtejä niin se voisi kuvata HashSet-elementtien joukon: { | HashMapia käytetään avain-& arvoparien tallentamiseen. Lyhyesti sanottuna se ylläpitää avain & arvo -mappia (HashMap-luokka vastaa suunnilleen Hashtable-luokkaa, paitsi että se on synkronoimaton ja sallii nollat.) Näin voisit esittää HashMap-elementtejä, jos sillä on kokonaislukuavain ja String-tyyppinen arvo: esim. {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”} |
HashSet ei salli päällekkäisiä elementtejä eli HashSetiin ei voi tallentaa päällekkäisiä arvoja. | HashMap ei salli päällekkäisiä avaimia mutta sallii kuitenkin päällekkäiset arvot. |
HashSet sallii yhden nolla-arvon. | HashMap sallii yhden nolla-avaimen ja minkä tahansa määrän nolla-arvoja. |
Yhtäläisyyksiä:
1) Sekä HashMap että HashSet eivät ole synkronoituja, mikä tarkoittaa, etteivät ne sovellu säikeenkestäviin operaatioihin yksiköllisesti elleivät ne ole synkronoituja yksiselitteisesti. Näin voit synkronoida ne eksplisiittisesti:
HashSet:
Set s = Collections.synchronizedSet(new HashSet(...));
HashMap:
Map m = Collections.synchronizedMap(new HashMap(...));
2) Molemmat näistä luokista eivät takaa, että niiden elementtien järjestys pysyy vakiona ajan kuluessa.
3) Jos katsot HashSetin lähdekoodia, niin saatat huomata, että sen taustalla on HashMap. Eli periaatteessa se käyttää sisäisesti HashMapia kaikkiin operaatioihinsa.
4) Molemmat tarjoavat vakioaikaisen suorituskyvyn perusoperaatioille, kuten elementin lisäämiselle, poistamiselle jne.
HashSet example
import java.util.HashSet;class HashSetDemo{ public static void main(String args) { // Create a HashSet HashSet<String> hset = new HashSet<String>(); //add elements to HashSet hset.add("AA"); hset.add("BB"); hset.add("CC"); hset.add("DD"); // Displaying HashSet elements System.out.println("HashSet contains: "); for(String temp : hset){ System.out.println(temp); } }}
Output:
HashSet contains: AABBCCDD
HashMap example
import java.util.HashMap;class HashMapDemo{ public static void main(String args) { // Create a HashMap HashMap<Integer, String> hmap = new HashMap<Integer, String>(); //add elements to HashMap hmap.put(1, "AA"); hmap.put(2, "BB"); hmap.put(3, "CC"); hmap.put(4, "DD"); // Displaying HashMap elements System.out.println("HashMap contains: "+hmap); }}
Output:
HashMap contains: {1=AA, 2=BB, 3=CC, 4=DD}
Leave a Reply