CodeGym/Java blog/Véletlen/Hogyan készítsünk szótárt Java nyelven
John Squirrels
Szint
San Francisco

Hogyan készítsünk szótárt Java nyelven

Megjelent a csoportban
Ha egy Java programban szótárt kell létrehoznia, a probléma leglogikusabb megoldása a szótár adatszerkezetének használata. Ez az adatstruktúra lehetővé teszi az információk tárolását "kulcs - érték" formában. A Java-nak van egy speciális Dictionary osztálya, valamint ennek leszármazottja, a Hashtable . Itt van még a Map felület és a HashMap osztály, amely szintén tárolja a „kulcs - érték” párokat. Tehát sokféleképpen hozhat létre Java szótárt.

Szótári adatstruktúra

Tehát a szótár adatstruktúra kulcs-érték kombinációként tárolja az információkat. Vagyis bármely értékhez társítunk egy kulcsot (lehet például id), és beírjuk ezt a párost a szótárba. A szótár elemének megcímzése, törlése, keresés a szótárban a kulcs által történik. Kényelmesnek tűnik ilyen adatszerkezettel rendszerezni, például telefonkönyvet, ahol a név (kulcs) megfelel a telefonszámnak (értéknek).

Szótárosztály és kiterjesztése

Először is, a java.util.Dictionary <K, V> util.Dictionary egy absztrakt osztály. Kulcs-érték relációt képvisel, és a térképhez hasonlóan működik. Adott egy kulcs, értékeket tárolhat, és szükség esetén a kulcs segítségével visszakeresheti az értéket. Így ez egy kulcs-érték pár lista.
public abstract class Dictionary<K,V> extends Object
Mivel ez az osztály absztrakt, nem fogunk vele közvetlenül dolgozni. A szótárnak van egy közvetlen gyermekosztálya Hashtable . Tehát szótár létrehozásához Java nyelven használhatja a Hashtablet . Ez az osztály egy hash táblát valósít meg, amely leképezi a kulcsokat értékekre, és bármely nem nulla objektum használható kulcsként vagy értékként. A Java hierarchiában a Hashtable kiterjeszti a szótárat és megvalósítja a Map alkalmazást . Mondjunk egy példát. Klasszikus szótárt, telefonkönyvet fogunk készíteni a Hashtable alapján .
Dictionary phoneBook = new Hashtable();
Ha így írunk, akkor néhány műveletnél típusöntést kell alkalmazni. Például egy kulcskivonáshoz.
System.out.println(((Hashtable) phoneBook).keySet());
Ennek elkerülése érdekében változtathatunk
Dictionary phoneBook = new Hashtable ();
a
Hashtable phoneBook = new Hashtable ();
Példánkban az egyértelműség kedvéért hagyjuk az első lehetőséget.
import java.util.Dictionary;
import java.util.Hashtable;

public class DictionaryDemo {

       public static void main(String[] args) {

           Dictionary phoneBook = new Hashtable();

           // put() method
           phoneBook.put("Johnny Walker", "2178");
           phoneBook.put("Andrew Arnold", "1298");
           phoneBook.put("Ivy Briggs", "1877");
           phoneBook.put("Ricky McBright", "2001");

           //print out Hashtable out
           System.out.println(phoneBook);

           //let's get the value using the key
           System.out.println(phoneBook.get("Ivy Briggs"));
           //there's no such key in out Hashtable
           System.out.println(phoneBook.get("Sol Frank"));

           //Is there a record with the "Johnny Walker" key?
           System.out.println(((Hashtable) phoneBook).containsKey("Johnny Walker"));
           //all keys of the Hashtable
           System.out.println(((Hashtable) phoneBook).keySet());
           //values from Hashtable
           System.out.println(((Hashtable) phoneBook).values());

           //the quantity of records
           System.out.println(phoneBook.size());
           //removing one record
           phoneBook.remove("Andrew Arnold");
           System.out.println(phoneBook);
       }
   }
A kimenet a következő:
{Andrew Arnold=1298, Johnny Walker=2178, Ricky McBright=2001, Ivy Briggs=1877} 1877 null igaz [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 2001, 1877] =2178, Ricky McBright=2001, Ivy Briggs=1877}

HashMap mint szótár

A HashMap a Hashtable-tól eltérően nem a Dictionary közvetlen leszármazottja . Számos funkció miatt azonban a legtöbb esetben jobb szótárt létrehozni a HashMap használatával . A HashMap osztály funkcionalitásában nagyon hasonló a Hashtable-hoz . A fő különbség az, hogy a Hashtable metódusai szinkronizáltak, de a HashMap nem. A hashtable szinkronizálása csökkenti a kód teljesítményét. Ezenkívül a HashMap osztály, ellentétben a Hashtable-val, lehetővé teszi a null kulcsként (egy) és a null készlet értékként történő használatát. Esetünkben a program pontosan ugyanúgy fog kinézni, mint a fenti példában. Az egyetlen különbség a gyűjtemény típusában van. A legtöbb esetben azonban ez az előnyben részesített módja a Java szótárak használatának.
import java.util.HashMap;
import java.util.Map;

public class DictionaryDemo2 {

   public static void main(String[] args) {

       Map<String, String> phoneBook = new HashMap<String,String>();

       phoneBook.put("Johnny Walker", "2178");
       phoneBook.put("Andrew Arnold", "1298");
       phoneBook.put("Ivy Briggs", "1877");
       phoneBook.put("Ricky McBright", "2001");

       System.out.println(phoneBook);

       System.out.println(phoneBook.get("Johnny Walker"));
       System.out.println(phoneBook.get("Ivy Briggs"));
       System.out.println(phoneBook.get("Unknown Friend"));

       System.out.println(phoneBook.containsKey("Johnny Walker"));
       System.out.println(phoneBook.containsKey("Unknown Friend"));

       System.out.println(phoneBook.keySet());
       System.out.println(phoneBook.values());

       System.out.println(phoneBook.size());

       phoneBook.remove("Andrew Arnold");

       System.out.println(phoneBook);
   }

}
Íme a kimenet:
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null igaz hamis [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1298, 1877, 4, {207 8] Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései