ความแตกต่างที่สำคัญ – TreeSet vs HashSet
ภาษาโปรแกรมส่วนใหญ่รองรับ Array เป็นโครงสร้างข้อมูลที่ใช้เก็บองค์ประกอบหลายรายการในประเภทข้อมูลเดียวกัน หากมีการประกาศอาร์เรย์สำหรับองค์ประกอบหกรายการ จะไม่สามารถเก็บองค์ประกอบสิบรายการได้ ดังนั้น อาร์เรย์จึงไม่ใช่ไดนามิกและไม่สามารถเปลี่ยนขนาดของอาร์เรย์ได้เมื่อมีการประกาศ ภาษาการเขียนโปรแกรมเช่น Java รองรับคอลเล็กชันที่ใช้ในการจัดเก็บข้อมูลแบบไดนามิก คอลเลกชันสนับสนุนการดำเนินการเช่นการเพิ่มองค์ประกอบและการลบองค์ประกอบ มีอินเทอร์เฟซและคลาสจำนวนมากในลำดับชั้นคอลเล็กชัน อินเทอร์เฟซพื้นฐานคืออินเทอร์เฟซคอลเลกชันSet เป็นอินเทอร์เฟซที่ขยายส่วนต่อประสานคอลเลกชัน ไม่อนุญาตให้ทำซ้ำ TreeSet และ HashSet เป็นสองคลาสในลำดับชั้นของคอลเลกชัน และทั้งคู่ใช้อินเทอร์เฟซ Set TreeSet เป็นคลาสที่ใช้อินเทอร์เฟซ Set และใช้เพื่อจัดเก็บองค์ประกอบเฉพาะในลำดับจากน้อยไปมาก HashSet เป็นคลาสที่ใช้อินเทอร์เฟซ Set และใช้เพื่อจัดเก็บองค์ประกอบเฉพาะโดยใช้กลไกการแฮช ความแตกต่างที่สำคัญระหว่าง TreeSet และ HashSet คือ TreeSet เก็บองค์ประกอบในลำดับจากน้อยไปมากในขณะที่ HashSet ไม่ได้จัดเก็บองค์ประกอบในลำดับจากน้อยไปมาก ทั้ง TreeSet และ HashSet จะเก็บเฉพาะองค์ประกอบที่ไม่ซ้ำ
ชุดต้นไม้คืออะไร
TreeSet ใช้อินเทอร์เฟซ NavigableSet อินเทอร์เฟซ NavigableSet ขยายอินเทอร์เฟซ SortedSet, Set, Collection และ Iterable ตามลำดับชั้น TreeSet จะรักษาลำดับจากน้อยไปมากเสมอ หากองค์ประกอบถูกแทรกในลำดับ B, A, C พวกเขาจะถูกเก็บไว้เป็น A, B, C วิธีการเช่นเพิ่ม (), ลบ () สามารถใช้กับวัตถุ TreeSetวิธีการเพิ่มสามารถใช้เพื่อเพิ่มองค์ประกอบได้ วิธีการลบใช้เพื่อลบองค์ประกอบออกจากคอลเล็กชัน นี่เป็นวิธีการบางอย่างที่สามารถใช้กับ TreeSet ได้
รูปที่ 01: โปรแกรมกับ TreeSet
ตามโปรแกรมด้านบน วัตถุประเภท TreeSet จะถูกสร้างขึ้น องค์ประกอบข้อมูลสตริงถูกเพิ่มไปยังวัตถุนั้นโดยใช้วิธีการเพิ่ม ลำดับข้อมูลที่แทรกคือ A, D, A, B, C, D โดยใช้ตัววนซ้ำ ค่าที่เก็บไว้จะถูกพิมพ์ไปที่หน้าจอ เอาต์พุตคือ A, B, C, D แม้ว่าจะมีตัวอักษร A สองตัวและตัวอักษร D สองตัว แต่เอาต์พุตจะแสดง A หนึ่งตัวและ D หนึ่งตัว ดังนั้น TreeSet จึงเก็บองค์ประกอบที่เป็นเอกลักษณ์ ไม่มีลำดับการแทรกเฉพาะ แต่เมื่อสังเกตผลลัพธ์ จะเห็นว่า TreeSet รักษาลำดับขององค์ประกอบจากน้อยไปมาก
HashSet คืออะไร
คลาส HashSet ขยายคลาส AbstractSet ที่ใช้ Set Interface อินเทอร์เฟซ Set สืบทอดอินเทอร์เฟซ Collection และ Iterable ตามลำดับชั้น ใน HashSet ไม่มีการรับประกันว่าองค์ประกอบจะรักษาลำดับจากน้อยไปมากและลำดับที่แทรก หากลำดับที่แทรกคือ A, B, C ค่าอาจจัดเก็บเป็น C, A, B ลำดับการจัดเก็บสามารถเป็น A, B, C ได้เช่นกัน แต่ไม่มีการรับประกันว่าคำสั่งที่แทรกหรือลำดับจากน้อยไปมากจะยังคงอยู่
รูปที่ 02: โปรแกรมกับ HashSet
ตามโปรแกรมด้านบน วัตถุประเภท HashSet จะถูกสร้างขึ้น องค์ประกอบข้อมูลสตริงถูกเพิ่มไปยังวัตถุนั้นโดยใช้วิธีการเพิ่ม ลำดับข้อมูลที่แทรกคือ L, R, M, M, R, L การใช้ตัววนซ้ำ ค่าที่เก็บไว้จะถูกพิมพ์ไปที่หน้าจอผลลัพธ์คือ R L M แม้ว่าจะมีตัวอักษร L, R และ M สองตัวจากแต่ละตัว แต่จะแสดงตัวอักษรเพียงตัวเดียวจากแต่ละตัว ดังนั้น HashSet จึงเก็บองค์ประกอบเฉพาะ เมื่อสังเกตผลลัพธ์จะเห็นว่าไม่มีการเรียงลำดับจากน้อยไปมากหรือรักษาลำดับที่แทรกไว้
ความคล้ายคลึงกันระหว่าง TreeSet และ HashSet คืออะไร
- ทั้ง TreeSet และ HashSet เป็นคลาสที่อยู่ในลำดับชั้นของคอลเลกชัน
- ทั้ง TreeSet และ HashSet เก็บเฉพาะองค์ประกอบที่ไม่ซ้ำ
- ทั้ง TreeSet และ HashSet สามารถใช้จัดเก็บและจัดการองค์ประกอบต่างๆ ได้
- ทั้ง TreeSet และ HashSet ไม่รักษาลำดับที่แทรกไว้
TreeSet กับ HashSet ต่างกันอย่างไร
TreeSet กับ HashSet |
|
TreeSet เป็นคลาสในลำดับชั้นของคอลเลกชันที่ใช้เก็บองค์ประกอบที่ไม่ซ้ำกันโดยเรียงลำดับจากน้อยไปมาก | HashSet เป็นคลาสในลำดับชั้นของคอลเลกชันที่ใช้เก็บองค์ประกอบที่ไม่ซ้ำโดยใช้กลไกการแฮช |
การจัดเก็บองค์ประกอบ | |
TreeSet เก็บองค์ประกอบจากน้อยไปมาก | HashSet ไม่เก็บองค์ประกอบจากน้อยไปมาก |
สรุป – TreeSet vs HashSet
ในการเขียนโปรแกรม จำเป็นต้องจัดเก็บองค์ประกอบข้อมูลแบบไดนามิก ภาษาการเขียนโปรแกรมเช่น Java รองรับคอลเล็กชันเพื่อให้งานนี้สำเร็จ มีอินเทอร์เฟซและคลาสจำนวนมากในลำดับชั้นคอลเล็กชัน TreeSet และ HashSet เป็นสองคลาสในลำดับชั้นของคอลเลกชัน ทั้งสองใช้อินเทอร์เฟซ Set TreeSet เป็นคลาสที่ใช้อินเทอร์เฟซ Set และใช้เพื่อจัดเก็บองค์ประกอบเฉพาะในลำดับจากน้อยไปมาก HashSet เป็นคลาสที่ใช้อินเทอร์เฟซ Set และใช้เพื่อจัดเก็บองค์ประกอบเฉพาะโดยใช้กลไกการแฮชความแตกต่างระหว่าง TreeSet และ HashSet คือ TreeSet เก็บองค์ประกอบในลำดับจากน้อยไปมากในขณะที่ HashSet ไม่ได้จัดเก็บองค์ประกอบในลำดับจากน้อยไปมาก บทความนี้กล่าวถึงความแตกต่างระหว่าง TreeSet และ HashSet