คุณสร้างพจนานุกรมใน Java อย่างไร [ปิด]


236

ฉันกำลังพยายามใช้พจนานุกรม (เช่นเดียวกับในหนังสือจริง) ฉันมีรายการคำและความหมายของพวกเขา

โครงสร้าง / ประเภทข้อมูลใดที่ Java จัดเตรียมไว้เพื่อเก็บรายการคำและความหมายของคำเหล่านั้นเป็นคู่ของคีย์ / ค่า

ฉันจะค้นหาและคืนค่าได้อย่างไร


24
ด้วยจิตวิญญาณของการมุ่งเน้นไปที่คำถามไม่ใช่ผู้ใช้ฉันลงคะแนนให้เปิดใหม่ ฉันแน่ใจว่าผู้ใช้รายนี้จบหลักสูตรในตอนนี้ ;) เป็นสำเนาของstackoverflow.com/questions/1540673/…แต่ฉันคิดว่าคำตอบที่นี่ดีกว่า
Adi Inbar

คำตอบ:


313

Map<String, String>คุณจะต้องการ คลาสที่ใช้Mapอินเตอร์เฟสรวมถึง (แต่ไม่ จำกัด เฉพาะ):

แต่ละแบบได้รับการออกแบบ / ปรับให้เหมาะสมสำหรับบางสถานการณ์ (ไปที่เอกสารที่เกี่ยวข้องสำหรับข้อมูลเพิ่มเติม) HashMapน่าจะเป็นเรื่องธรรมดาที่สุด เริ่มต้นไปสู่

ตัวอย่างเช่น (ใช้ a HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
ชนิดของสัตว์

1
@ Cruncher นอกจากนี้ยังดำเนินการMap(ตรวจสอบ javadoc)
arshajii

1
@arshajii ฉันมีข้อสงสัยว่าเราจับคู่สตริงทั้งหมดในพจนานุกรมด้วยตนเองหรือฉันสามารถพูดได้ว่าเราจัดเก็บความหมายของคำทั้งหมดด้วยตนเอง ดังนั้นคำถามของฉันคือมีวิธีใดบ้างเช่นไฟล์ db (dump) ของพจนานุกรมเพื่อดึงคำและความหมาย / คำจำกัดความของพวกเขาเพื่อให้เราสามารถหลีกเลี่ยงการเพิ่มความหมายของแต่ละคำได้ด้วยตนเอง
Vighanesh Gursale

@VighaneshGursale คุณจะต้องใช้วิธีการใส่เพื่อสร้างโครงสร้างข้อมูลของคุณในช่วง exeuction คิดว่าคำสั่ง put เป็นการอ่านไฟล์จากแผ่นดิสก์และวางไว้ในหน่วยความจำ (ram) เพื่อให้คุณสามารถทำงานกับมันได้ หากคุณมีไฟล์ที่คุณต้องการโหลดเป็นโครงสร้างข้อมูลในโหลดอัตโนมัติคุณต้องดูใน java spring แต่มีความซับซ้อน
Dan Ciborowski - MSFT

5
อย่างไรก็ตามคุณไม่จำเป็นต้องรวม <String, String> เป็นครั้งที่สอง คุณสามารถทำได้Map<String, String> map = new HashMap<>();
Samuel Noyes

คุณลืมที่จะพูดถึง ConcurrentHashMap ที่นิยมใช้มากกว่า Hashtable
Arsenius

80

สิ่งนี้สร้างพจนานุกรมข้อความ (สตริง):

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

จากนั้นคุณใช้เป็น:

dictionary.put("key", "value");
String value = dictionary.get("key");

ใช้งานได้ แต่ให้ข้อผิดพลาดที่คุณต้องเก็บคลาสคอนสตรัคเตอร์เหมือนกับคลาสการประกาศ ฉันรู้ว่ามันสืบทอดมาจากคลาสแม่ แต่น่าเสียดายที่มันให้ข้อผิดพลาดในขณะทำงาน

Map<String, String> dictionary = new Map<String, String>();

ทำงานได้อย่างถูกต้อง


3
dictionary["key"]จะไม่ทำงาน - dictionary.get("key")มันควรจะเป็น
arshajii

21
ทรูอาจจะบาง C # เล็ดรอดใน :)
SmartK8

12

ใช้แผนที่อินเตอร์เฟสและการนำไปใช้เช่นHashMap


1
ยินดีต้อนรับลิงก์ไปยังโซลูชัน แต่โปรดตรวจสอบให้แน่ใจว่าคำตอบของคุณมีประโยชน์หากไม่มี: เพิ่มบริบทรอบลิงก์เพื่อให้ผู้ใช้เพื่อนของคุณมีความคิดว่ามันคืออะไรและเพราะเหตุใดจึงอยู่ที่นั่น กำลังเชื่อมโยงไปยังในกรณีที่หน้าเป้าหมายไม่พร้อมใช้งาน คำตอบที่น้อยกว่าลิงก์อาจถูกลบ
FelixSFD

6

มีพจนานุกรมชั้นนามธรรม

http://docs.oracle.com/javase/6/docs/api/java/util/Dictionary.html

อย่างไรก็ตามสิ่งนี้ต้องมีการดำเนินการ

Java ให้การใช้งานที่ดีที่เรียกว่า Hashtable

http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html


6
Dictionaryถูกล้าสมัยและไม่มีการนำไปใช้งานเพิ่มเติม
asgs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.