CodeGym/Java Blog/Random/Paano lumikha ng isang diksyunaryo sa Java
John Squirrels
Antas
San Francisco

Paano lumikha ng isang diksyunaryo sa Java

Nai-publish sa grupo
Kung kailangan mong lumikha ng isang diksyunaryo sa isang Java program, ang pinakalohikal na paraan upang malutas ang problemang ito ay ang paggamit ng istraktura ng data ng diksyunaryo. Ang istraktura ng data na ito ay nagpapahintulot sa iyo na mag-imbak ng impormasyon sa form na "key - value". Ang Java ay may espesyal na klase ng Diksyunaryo gayundin ang inapo nito, Hashtable . Mayroon ding interface ng Map at ang klase ng HashMap , na nag-iimbak din ng mga pares ng "key - value". Kaya mayroong maraming mga paraan upang lumikha ng isang diksyunaryo ng Java.

Istraktura ng data ng diksyunaryo

Kaya, ang istraktura ng data ng Dictionary ay nag-iimbak ng impormasyon bilang kumbinasyon ng key-value. Iyon ay, sa anumang halaga ay iniuugnay namin ang isang susi (maaari itong, halimbawa, id) at ipasok ang pares na ito sa diksyunaryo. Ang pagtugon sa isang elemento ng diksyunaryo, pagtanggal, paghahanap sa diksyunaryo ay ginagawa ng susi. Tila maginhawa upang ayusin gamit ang naturang istraktura ng data, halimbawa, isang libro ng telepono, kung saan ang pangalan (key) ay tumutugma sa numero ng telepono (halaga).

Klase ng diksyunaryo at ang extension nito

Upang magsimula, ang java.util.Dictionary <K, V> util.Dictionary ay isang abstract na klase. Ito ay kumakatawan sa isang key-value na kaugnayan at gumagana katulad ng isang mapa. Dahil sa isang susi maaari kang mag-imbak ng mga halaga at kapag kinakailangan ay maaaring mabawi ang halaga gamit ang susi nito. Kaya, ito ay isang listahan ng key-value pair.
public abstract class Dictionary<K,V> extends Object
Dahil abstract ang klase na ito, hindi namin ito direktang gagawin. Ang diksyunaryo ay may direktang child class na Hashtable . Kaya para sa paglikha ng diksyunaryo sa Java maaari mong gamitin ang Hashtable . Ang klase na ito ay nagpapatupad ng hash table, na nagmamapa ng mga key sa mga value at anumang non-null object ay maaaring gamitin bilang key o bilang value. Sa hierarchy ng Java , pinalawak ng Hashtable ang Dictionary at ipinapatupad ang Map . Magbigay tayo ng halimbawa. Gagawa kami ng isang klasikong diksyunaryo, isang phone book, batay sa Hashtable .
Dictionary phoneBook = new Hashtable();
Kung magsusulat tayo sa ganitong paraan, dapat nating ilapat ang uri ng casting para sa ilang operasyon. Halimbawa, para sa isang key extraction.
System.out.println(((Hashtable) phoneBook).keySet());
Upang maiwasan ito, maaari tayong magbago
Dictionary phoneBook = new Hashtable ();
sa
Hashtable phoneBook = new Hashtable ();
Sa aming halimbawa, para sa kalinawan, iiwan namin ang unang opsyon.
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);
       }
   }
Ang output ay:
{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, 4 {1877] =2178, Ricky McBright=2001, Ivy Briggs=1877}

HashMap bilang isang diksyunaryo

Ang HashMap , hindi katulad ng Hashtable , ay hindi direktang inapo ng Dictionary . Gayunpaman, dahil sa maraming mga tampok, sa karamihan ng mga kaso ay mas mahusay na lumikha ng isang diksyunaryo gamit ang HashMap . Ang klase ng HashMap ay halos kapareho sa paggana sa Hashtable . Ang pangunahing pagkakaiba ay ang mga pamamaraan ng Hashtable ay naka-synchronize, ngunit ang HashMap ay hindi. Binabawasan ng pag-synchronize sa Hashtable ang pagganap ng code. Bilang karagdagan, ang klase ng HashMap , hindi katulad ng Hashtable, ay nagbibigay-daan sa paggamit ng null bilang isang susi (isa) at isang hanay ng null bilang mga halaga. Sa aming kaso, ang programa ay magiging eksaktong kapareho ng halimbawa sa itaas. Ang pagkakaiba lang ay nasa uri ng koleksyon. Gayunpaman, ito ang ginustong paraan upang gumana sa mga diksyunaryo sa Java sa karamihan ng mga kaso.
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);
   }

}
Narito ang output:
{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, 1877, 2001], 4 Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito