โค้ดยิม/จาวาบล็อก/สุ่ม/วิธีสร้างพจนานุกรมใน Java
John Squirrels
ระดับ
San Francisco

วิธีสร้างพจนานุกรมใน Java

เผยแพร่ในกลุ่ม
หากคุณต้องการสร้างพจนานุกรมในโปรแกรม Java วิธีที่เหมาะสมที่สุดในการแก้ปัญหานี้คือการใช้โครงสร้างข้อมูลพจนานุกรม โครงสร้างข้อมูลนี้ช่วยให้คุณสามารถจัดเก็บข้อมูลในรูปแบบ "คีย์ - ค่า" Java มี คลาส พจนานุกรม พิเศษ เช่นเดียวกับHashtable ที่สืบทอด มา นอกจากนี้ยังมี อินเทอร์เฟ ซแผนที่และ คลาส HashMapซึ่งเก็บคู่ "คีย์ - ค่า" ไว้ด้วย ดังนั้นจึงมีหลายวิธีในการสร้างพจนานุกรม Java

โครงสร้างข้อมูลพจนานุกรม

ดังนั้น โครงสร้างข้อมูลพจนานุกรมจึงเก็บข้อมูลเป็นคีย์-ค่าผสม นั่นคือเราเชื่อมโยงคีย์กับค่าใด ๆ (อาจเป็นเช่น id) และป้อนคู่นี้ลงในพจนานุกรม การระบุองค์ประกอบของพจนานุกรม การลบ การค้นหาในพจนานุกรมนั้นดำเนินการโดยปุ่ม ดูเหมือนจะสะดวกในการจัดระเบียบโดยใช้โครงสร้างข้อมูล เช่น สมุดโทรศัพท์ ซึ่งชื่อ (คีย์) ตรงกับหมายเลขโทรศัพท์ (ค่า)

คลาสพจนานุกรมและส่วนขยาย

เริ่มต้นด้วยjava.util.Dictionary <K, V> util.Dictionaryเป็นคลาสนามธรรม มันแสดงถึงความสัมพันธ์ของคีย์-ค่าและทำงานคล้ายกับแผนที่ กำหนดคีย์ที่คุณสามารถเก็บค่าและเมื่อจำเป็นสามารถดึงค่ากลับมาโดยใช้คีย์ของมัน ดังนั้นจึงเป็นรายการคู่คีย์-ค่า
public abstract class Dictionary<K,V> extends Object
เนื่องจากคลาสนี้เป็นนามธรรม เราจะไม่ทำงานกับคลาสนี้โดยตรง พจนานุกรม มี Hashtableคลาสลูกโดยตรง ดังนั้นสำหรับการสร้างพจนานุกรมใน Java คุณสามารถใช้Hashtable คลาสนี้ใช้ตารางแฮช ซึ่งแม็พคีย์กับค่า และออบเจกต์ที่ไม่ใช่ค่า Null สามารถใช้เป็นคีย์หรือเป็นค่าได้ ในลำดับชั้นของ Java Hashtable ขยายพจนานุกรมและใช้Map ลองยกตัวอย่าง เรากำลังจะสร้างพจนานุกรมแบบคลาสสิก สมุดโทรศัพท์ โดยยึดตาม Hashtable
Dictionary phoneBook = new Hashtable();
หากเราเขียนแบบนี้ เราควรใช้การหล่อแบบสำหรับการดำเนินการบางอย่าง ตัวอย่างเช่น สำหรับการสกัดคีย์
System.out.println(((Hashtable) phoneBook).keySet());
เพื่อหลีกเลี่ยงปัญหานี้ เราสามารถเปลี่ยนได้
Dictionary phoneBook = new Hashtable ();
บน
Hashtable phoneBook = new Hashtable ();
ในตัวอย่างของเรา เพื่อความชัดเจน เราจะออกจากตัวเลือกแรก
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);
       }
   }
ผลลัพธ์คือ:
{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, 1877] 4 {จอห์นนี่ วอล์กเกอร์ =2178, Ricky McBright=2001, Ivy Briggs=1877}

HashMap เป็นพจนานุกรม

HashMapซึ่งแตกต่างจากHashtableคือไม่ใช่ลูกหลานโดยตรงของDictionary อย่างไรก็ตาม เนื่องจากคุณสมบัติหลายอย่าง ในกรณีส่วนใหญ่ การสร้างพจนานุกรมโดยใช้ HashMap จะดีกว่า คลาสHashMapนั้นคล้ายกับฟังก์ชันHashtable มาก ข้อแตกต่างที่สำคัญคือเมธอดของHashtableถูกซิงโครไนซ์ แต่HashMapไม่ซิ งโครไนซ์ การซิงโครไนซ์ในHashtableทำให้ประสิทธิภาพของโค้ดลดลง นอกจากนี้ คลาส HashMapซึ่งแตกต่างจากHashtableอนุญาตให้ใช้ null เป็นคีย์ (หนึ่ง) และชุดของ null เป็นค่า ในกรณีของเรา โปรแกรมจะมีลักษณะเหมือนกับตัวอย่างด้านบนทุกประการ ข้อแตกต่างเพียงอย่างเดียวคือประเภทของคอลเลกชัน อย่างไรก็ตาม วิธีนี้เป็นวิธีที่นิยมใช้ในการทำงานกับพจนานุกรมใน Java ในกรณีส่วนใหญ่
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);
   }

}
นี่คือผลลัพธ์:
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null จริงเท็จ [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1298, 1877, 2001, 2178] 4 { Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
ความคิดเห็น
  • เป็นที่นิยม
  • ใหม่
  • เก่า
คุณต้องลงชื่อเข้าใช้เพื่อแสดงความคิดเห็น
หน้านี้ยังไม่มีความคิดเห็นใด ๆ