CodeGym/Java blog/Tilfældig/Hvordan man opretter en ordbog i Java
John Squirrels
Niveau
San Francisco

Hvordan man opretter en ordbog i Java

Udgivet i gruppen
Hvis du skal oprette en ordbog i et Java-program, er den mest logiske måde at løse dette problem på at bruge ordbogens datastruktur. Denne datastruktur giver dig mulighed for at gemme information i formen "nøgle - værdi". Java har en speciel ordbogsklasse såvel som dens efterkommer, Hashtable . Der er også kortgrænsefladen og HashMap - klassen, som også gemmer "nøgle-værdi"-par. Så der er mange måder at oprette en Java-ordbog på.

Ordbogs datastruktur

Så ordbogens datastruktur gemmer information som en nøgle-værdi kombination. Det vil sige, at vi til enhver værdi knytter en nøgle (det kan f.eks. være id) og indtaster dette par i ordbogen. Adressering af et element i ordbogen, sletning, søgning i ordbogen udføres med tasten. Det virker praktisk at organisere ved hjælp af en sådan datastruktur, for eksempel en telefonbog, hvor navnet (nøglen) svarer til telefonnummeret (værdien).

Ordbogsklasse og dens udvidelse

Til at begynde med er java.util.Dictionary <K, V> util.Dictionary en abstrakt klasse. Det repræsenterer en nøgle-værdi-relation og fungerer på samme måde som et kort. Med en nøgle kan du gemme værdier og efter behov kan du hente værdien tilbage ved hjælp af dens nøgle. Det er således en liste over nøgleværdi-par.
public abstract class Dictionary<K,V> extends Object
Da denne klasse er abstrakt, arbejder vi ikke direkte med den. Ordbog har en direkte underordnet klasse Hashtable . Så for at oprette en ordbog i Java kan du bruge Hashtable . Denne klasse implementerer en hash-tabel, som kortlægger nøgler til værdier, og ethvert ikke-null objekt kan bruges som en nøgle eller som en værdi. I Java-hierarki udvider Hashtable Dictionary og implementerer Map . Lad os give et eksempel. Vi skal lave en klassisk ordbog, en telefonbog, baseret på Hashtable .
Dictionary phoneBook = new Hashtable();
Hvis vi skriver på denne måde, bør vi anvende typestøbning til nogle operationer. For eksempel til en nøgleudtrækning.
System.out.println(((Hashtable) phoneBook).keySet());
For at undgå dette kan vi ændre
Dictionary phoneBook = new Hashtable ();
på den
Hashtable phoneBook = new Hashtable ();
I vores eksempel vil vi for klarhedens skyld forlade den første mulighed.
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);
       }
   }
Udgangen er:
{Andrew Arnold=1298, Johnny Walker=2178, Ricky McBright=2001, Ivy Briggs=1877} 1877 null true [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 2001, 4Johnny Walker] =2178, Ricky McBright=2001, Ivy Briggs=1877}

HashMap som en ordbog

HashMap er , i modsætning til Hashtable , ikke en direkte efterkommer af Dictionary . Men på grund af mange funktioner er det i de fleste tilfælde bedre at oprette en ordbog ved hjælp af HashMap . HashMap - klassen minder meget om funktionaliteten til Hashtable . Den største forskel er, at metoderne til Hashtable er synkroniserede, men HashMap er det ikke. Synkronisering i hashtabellen reducerer kodens ydeevne. Derudover HashMap- klassen, i modsætning til Hashtable, tillader brugen af ​​null som en nøgle (én) og et sæt null som værdier. I vores tilfælde vil programmet se nøjagtigt det samme ud som eksemplet ovenfor. Den eneste forskel er i typen af ​​samlingen. Dette er dog den foretrukne måde at arbejde med ordbøger på i Java i de fleste tilfælde.
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);
   }

}
Her er outputtet:
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null true false [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1298, 187817, 400 Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu