Hashmap ใน Java คืออะไร? อธิบายพร้อมตัวอย่าง

เผยแพร่แล้ว: 2021-07-02

HashMap เป็นคลาสคอลเลกชันใน Java คุณสามารถใช้เพื่อเก็บคู่คีย์และค่า ประสิทธิภาพขึ้นอยู่กับความจุเริ่มต้นและปัจจัยโหลด HashMap มีวิธีการต่างๆ ที่ช่วยให้คุณใช้โครงสร้างข้อมูลตารางแฮชได้

ในบทความต่อไปนี้ เราจะสำรวจว่า HashMap คืออะไรและเรียนรู้เกี่ยวกับตัวสร้างต่างๆ ผ่านตัวอย่าง

สารบัญ

HashMap คืออะไร?

HashMap เป็นคลาสคอลเลกชันตามแผนที่ เราใช้เพื่อเก็บคู่คีย์ & ค่า คุณแสดงว่า HashMap Java เป็น HashMap<K, V> โดยที่ K ย่อมาจาก Key และ V หมายถึง Value

HashMap นั้นคล้ายกับคลาส Hashtable ความแตกต่างระหว่างทั้งสองคือ HashMap จะไม่ซิงโครไนซ์ในขณะที่ Hashtable ไม่ใช่ ไม่เหมือนกับ Hashtable HashMap อนุญาตค่า Null และคีย์ Null

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

HashMap ช่วยให้คุณใช้งานส่วนต่อประสานแผนที่ของ Java ได้ง่าย คุณสามารถเข้าถึงคู่คีย์-ค่าที่คุณจัดเก็บผ่าน HashMap ได้โดยใช้ดัชนีประเภทอื่น (เช่น จำนวนเต็ม) โปรดทราบว่าหากคุณใช้คีย์ที่ซ้ำกัน คีย์ดังกล่าวจะแทนที่องค์ประกอบของคีย์ที่เกี่ยวข้อง นอกจากนี้ คุณสามารถใช้ออบเจ็กต์คีย์ null ได้เพียงรายการเดียวเท่านั้น อย่างไรก็ตาม สามารถมีค่า Null ได้จำนวนเท่าใดก็ได้

HashMap ใช้อินเทอร์เฟซ Cloneable, Serializable, Map<K, V> มันขยายคลาส AbstractMap<K, V> และคลาสย่อยโดยตรงคือ PrinterStateReasons และ LinkedHashMap

คุณสมบัติของ HashMap

ต่อไปนี้เป็นคุณสมบัติหลักใน HashMap:

  • เป็นส่วนประกอบของ java.util.package
  • คุณสามารถใช้ค่าที่ซ้ำกัน แต่ HashMap ไม่อนุญาตให้มีคีย์ที่ซ้ำกัน หมายความว่าหนึ่งคีย์ไม่สามารถมีหลายค่าได้ แต่หลายคีย์สามารถมีค่าเดียวได้
  • คุณสามารถใช้คีย์ null ได้เพียงครั้งเดียว แต่คุณสามารถใช้ค่า null ต่างๆ ได้
  • HashMap ไม่รับประกันเกี่ยวกับลำดับของแผนที่ ดังนั้นจึงไม่รับประกันว่าคำสั่งซื้อจะคงที่หรือไม่
  • HashMap นั้นคล้ายกับ Hashtable มาก โดยมีความแตกต่างเพียงอย่างเดียวคือ HashMap จะไม่ซิงโครไนซ์
  • HashMap ใช้อินเทอร์เฟซแบบ Serializable และ Cloneable

ตัวสร้าง HashMap

มีตัวสร้างสี่ตัวใน HashMap:

1. HashMap()

HashMap() เป็นคอนสตรัคเตอร์เริ่มต้นที่สร้างอินสแตนซ์ด้วยปัจจัยโหลด 0.75 และความจุเริ่มต้น 16

ตัวอย่าง :

// แสดงว่าตัวสร้าง HashMap() ทำงานอย่างไร

นำเข้า java.io.*;

นำเข้า java.util.*;

คลาส AddElementsToHashMap {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

//ไม่ต้องพูดถึง

// ประเภททั่วไปสองครั้ง

HashMap<จำนวนเต็ม สตริง> hm1 = HashMap ใหม่<>();

// การใช้ Generics เพื่อเริ่มต้น HashMap

HashMap<จำนวนเต็ม, สตริง> hm2

= ใหม่ HashMap<จำนวนเต็ม, สตริง>();

// ใช้วิธีการใส่เพื่อเพิ่มองค์ประกอบใด ๆ

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“ผลลัพธ์ของ hm1 คือ:“

+ hm1);

System.out.println("ผลลัพธ์ของ HashMap hm2 คือ:"

+ hm2);

}

}

เอาท์พุต :

ผลลัพธ์ของ hm1 ได้แก่ : {1=A, 2=B, 3=C}

ผลลัพธ์ของ hm2 คือ: {4=D, 5=E, 6=F}

2. HashMap (ความจุเริ่มต้น int)

HashMap(int initialCapacity) จะสร้างอินสแตนซ์ที่มีโหลด 0.75 และความจุเริ่มต้นที่เฉพาะเจาะจง

ตัวอย่าง :

// แสดงว่าตัวสร้าง HashMap (int initialCapacity) ทำงานอย่างไร

นำเข้า java.io.*;

นำเข้า java.util.*;

คลาส AddElementsToHashMap {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

//ไม่ต้องพูดถึง

// ประเภททั่วไปสองครั้ง

HashMap<จำนวนเต็ม สตริง> hm1 = HashMap ใหม่<>(10);

// การใช้ Generics เพื่อเริ่มต้น HashMap

HashMap<จำนวนเต็ม, สตริง> hm2

= ใหม่ HashMap<จำนวนเต็ม สตริง>(2);

// ใช้วิธีการใส่เพื่อเพิ่มองค์ประกอบใด ๆ

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“ผลลัพธ์ของ hm1 คือ:“

+ hm1);

System.out.println("ผลลัพธ์ของ HashMap hm2 คือ:"

+ hm2);

}

}

เอาท์พุต :

ผลลัพธ์ของ hm1 ได้แก่ : {1=A, 2=B, 3=C}

ผลลัพธ์ของ hm2 คือ: {4=D, 5=E, 6=F}

3. HashMap (int initialCapacity, float loadFactor)

HashMap (int initialCapacity, float loadFactor) สร้างอินสแตนซ์ที่มีปัจจัยโหลดเฉพาะและความจุเริ่มต้น

ตัวอย่าง :

// แสดงว่า HashMap (int initialCapacity, float loadFactor) Constructor ทำงานอย่างไร

นำเข้า java.io.*;

นำเข้า java.util.*;

คลาส AddElementsToHashMap {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

//ไม่ต้องพูดถึง

// ประเภททั่วไปสองครั้ง

HashMap<จำนวนเต็ม สตริง> hm1

= HashMap ใหม่<>(5, 0.75f);

// การใช้ Generics เพื่อเริ่มต้น HashMap

HashMap<จำนวนเต็ม, สตริง> hm2

= ใหม่ HashMap<จำนวนเต็ม สตริง>(3, 0.5f);

// ใช้วิธีการใส่เพื่อเพิ่มองค์ประกอบ

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“ผลลัพธ์ของ hm1 คือ:“

+ hm1);

System.out.println("ผลลัพธ์ของ HashMap hm2 คือ:"

+ hm2);

}

}

เอาท์พุต :

ผลลัพธ์ของ hm1 ได้แก่ : {1=A, 2=B, 3=C}

ผลลัพธ์ของ hm2 คือ: {4=D, 5=E, 6=F}

4. HashMap (แผนที่แผนที่)

HashMap(แผนที่แผนที่) จะสร้างอินสแตนซ์ที่มีการแมปเดียวกันกับแผนที่ที่คุณระบุ

ตัวอย่าง :

// แสดงว่าตัวสร้าง HashMap (แผนที่แผนที่) ทำงานอย่างไร

นำเข้า java.io.*;

นำเข้า java.util.*;

คลาส AddElementsToHashMap {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

//ไม่ต้องพูดถึง

// ประเภททั่วไปสองครั้ง

แผนที่<จำนวนเต็ม สตริง> hm1 = ใหม่ HashMap<>();

// การใช้ Generics เพื่อเริ่มต้น HashMap

HashMap<จำนวนเต็ม, สตริง> hm2

= ใหม่ HashMap<จำนวนเต็ม สตริง>(hml);

// ใช้วิธีการใส่เพื่อเพิ่มองค์ประกอบใด ๆ

hm1.put(1, “A”);

hm1.put(2, “B”);

hm1.put(3, “C”);

hm2.put(4, “D”);

hm2.put(5, “E”);

hm2.put(6, “F”);

System.out.println(“ผลลัพธ์ของ hm1 คือ:“

+ hm1);

System.out.println("ผลลัพธ์ของ HashMap hm2 คือ:"

+ hm2);

}

}

เอาท์พุต :

ผลลัพธ์ของ hm1 ได้แก่ : {1=A, 2=B, 3=C}

ผลลัพธ์ของ hm2 คือ: {4=D, 5=E, 6=F}

เรียนรู้เพิ่มเติมเกี่ยวกับ Java

Java มีหลายคลาสนอกเหนือจาก HashMap การเรียนรู้เกี่ยวกับสาระสำคัญของแต่ละคลาส การใช้งาน และการบูรณาการใน Java ด้วยตัวเองนั้นค่อนข้างท้าทาย วิธีที่ดีที่สุดในกระบวนการนี้คือการเรียนหลักสูตรวิทยาการคอมพิวเตอร์

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

คุณสามารถตรวจสอบ หลักสูตรวิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์ ที่นำเสนอร่วมกับ LJMU (Liverpool John Moores University, UK) และ IIIT-B (International Institute of Information Technology, India) หลักสูตรนี้ครอบคลุมเนื้อหามากกว่า 500 ชั่วโมง การบรรยายสดมากกว่า 10 ครั้ง และกรณีศึกษามากกว่า 30 กรณี

หลักสูตร 19 เดือนนี้รับประกันประสบการณ์การเรียนรู้ที่เน้นคุณค่าและระดับโลก การเพิ่มมูลค่าที่ใหญ่ที่สุดคือการที่คุณจะได้เชื่อมต่อและมีส่วนร่วมกับเพื่อนร่วมงานจากทั่วโลก upGrad ภูมิใจนำเสนอว่ามีผู้เรียนทั่วโลกที่ได้รับค่าจ้าง 40,000 คนกระจายอยู่ในกว่า 85 ประเทศ ด้วยเหตุนี้ คุณจึงได้สัมผัสกับวัฒนธรรมใหม่ ความคิดเห็นใหม่ๆ และมุมมองใหม่ๆ ที่จะขยายมุมมองโดยรวมของคุณให้กว้างขึ้น ไม่เพียงแค่นั้น คุณยังได้รับการฝึกอบรมโดยที่ปรึกษาผู้เชี่ยวชาญจาก LJMU และ IIIT-B ที่ให้ความช่วยเหลือเฉพาะบุคคลเพื่อช่วยแก้ไขข้อสงสัยของคุณ

นอกจากข้อดีเหล่านี้แล้ว โปรแกรมนี้จะช่วยให้คุณได้รับความช่วยเหลือด้านอาชีพแบบ 360 องศา ซึ่งรวมถึงการให้คำปรึกษาในอุตสาหกรรม โอกาสในการสร้างเครือข่าย และอื่นๆ อีกมากมาย

บทสรุป

ในบทความนี้ เราได้เรียนรู้ว่า HashMap คืออะไร ตัวสร้างที่แตกต่างกัน และวิธีที่คุณสามารถนำไปใช้ผ่านตัวอย่าง HashMap มีแอปพลิเคชันมากมายใน Java คุณสามารถใช้ HashMap เพื่อเพิ่มรายการ ลบออก และจัดการได้ตามต้องการ

คุณคิดอย่างไรกับคู่มือนี้ใน HashMap แบ่งปันในส่วนความคิดเห็นด้านล่าง

พัฒนาตัวเองและเตรียมพร้อมสำหรับอนาคต

สมัครเลย สำหรับหลักสูตรวิศวกรรมซอฟต์แวร์ แบบฟอร์ม LJMU