ความแตกต่างที่สำคัญ – รายการเทียบกับชุด
ภาษาโปรแกรมส่วนใหญ่ใช้อาร์เรย์เพื่อจัดเก็บชุดข้อมูลประเภทเดียวกัน ข้อเสียเปรียบที่สำคัญประการหนึ่งของอาร์เรย์คือ เมื่อประกาศขนาดอาร์เรย์แล้ว จะไม่สามารถแก้ไขได้ หากโปรแกรมเมอร์ต้องการเก็บค่าที่เกินขนาดอาร์เรย์ เขาควรสร้างอาร์เรย์ใหม่และคัดลอกองค์ประกอบที่มีอยู่ไปยังอาร์เรย์ใหม่ ในสถานการณ์เหล่านี้ สามารถใช้คอลเล็กชันได้ คุณสามารถเพิ่มองค์ประกอบ ลบองค์ประกอบ และการดำเนินการอื่น ๆ อีกมากมายด้วยการสนับสนุนของคอลเลกชัน มีคอลเลกชั่นหลายประเภทในภาษาการเขียนโปรแกรม เช่น Java รายการและชุดเป็นส่วนต่อประสานของลำดับชั้นของคอลเลกชันอินเทอร์เฟซพื้นฐานสำหรับอินเทอร์เฟซอื่นคือคอลเล็กชัน ความแตกต่างที่สำคัญระหว่าง List และ Set คือ List รองรับการจัดเก็บองค์ประกอบเดียวกันหลายครั้งในขณะที่ Set ไม่รองรับการจัดเก็บองค์ประกอบเดียวกันหลายครั้ง ดังนั้นชุดไม่อนุญาตให้ทำซ้ำ
รายการคืออะไร
รายการนี้เป็นอินเทอร์เฟซที่ขยายอินเทอร์เฟซคอลเลกชัน มีหลายวิธีในอินเทอร์เฟซการรวบรวม วิธีการเพิ่มช่วยในการเพิ่มองค์ประกอบ 'วิธีการลบ' คือการลบองค์ประกอบ มี 'วิธี addAll' เพื่อเพิ่มองค์ประกอบหลายรายการในขณะที่ 'วิธีการลบทั้งหมด' เพื่อลบองค์ประกอบออกจากคอลเล็กชัน มีวิธีการช่วยในการค้นหาว่ามีวัตถุเฉพาะในรายการหรือไม่ 'containsAll' คือการค้นหาว่ามีชุดของวัตถุอยู่ในคอลเล็กชันหรือไม่ วิธีการวนซ้ำใช้เพื่อวนซ้ำรายการในรายการ เมื่อ List ขยายคอลเล็กชัน วิธีการทั้งหมดของ Collection จะเป็นของ List นอกเหนือจากวิธีการเหล่านั้น รายการมีวิธีเช่นรับและตั้งค่าโปรแกรมเมอร์สามารถรับค่าที่ดัชนีเฉพาะโดยใช้วิธีรับ โปรแกรมเมอร์สามารถตั้งค่าที่ดัชนีเฉพาะโดยใช้วิธีการตั้งค่า 'indexOf' ใช้เพื่อค้นหาดัชนีขององค์ประกอบ
ในรายการ การดำเนินการสามารถทำได้ตามตำแหน่ง โปรแกรมเมอร์สามารถจัดเตรียมองค์ประกอบข้อมูลที่จะเพิ่มลงในดัชนี ดังนั้นมันจะถูกเพิ่มไปยังดัชนีเฉพาะ หากโปรแกรมเมอร์ไม่ให้ดัชนี องค์ประกอบจะถูกเพิ่มที่ส่วนท้ายของรายการ ยังรักษาลำดับที่แทรกไว้ หากเพิ่มองค์ประกอบ 1 แล้วเพิ่มองค์ประกอบ 2 แล้ว element1 จะอยู่ก่อนองค์ประกอบ2
รูปที่ 01: รายการและชุด
ArrayList, LinkedList, Vector เป็นคลาสบางคลาสที่ใช้ List ใน ArrayList การเข้าถึงองค์ประกอบนั้นรวดเร็ว แต่การแทรกและการลบนั้นต่ำกว่าArrayList ไม่ปลอดภัยสำหรับเธรด การเข้าถึง ArrayList เดียวกันจากหลายเธรดอาจไม่ให้ผลลัพธ์เหมือนกัน ใน LinkedList อิลิเมนต์จะเชื่อมโยงกับทั้งย้อนกลับและไปข้างหน้า การแทรกและการลบองค์ประกอบโดยใช้ LinkedList นั้นเร็วกว่า ArrayList LinkedList ใช้ List และ Queue ทั้งสองอย่าง เวกเตอร์คล้ายกับ ArrayList แต่ปลอดภัยจากดอกยางเนื่องจากวิธีการทั้งหมดจะซิงโครไนซ์
ชุดอะไร
Set เป็นอินเทอร์เฟซที่ขยายส่วนต่อประสานคอลเลกชัน เนื่องจากอินเทอร์เฟซ Set ขยายคอลเล็กชัน วิธีการทั้งหมดของคอลเล็กชันจึงเป็นของ Set ด้วย ชุดไม่รองรับค่าการทำซ้ำ ดังนั้นโปรแกรมเมอร์จึงไม่สามารถจัดเก็บองค์ประกอบเดียวกันได้สองครั้ง มันรักษาชุดองค์ประกอบที่เป็นเอกลักษณ์ อินเทอร์เฟซ SortedSet ขยายส่วนต่อประสาน Set SortedSet รักษาองค์ประกอบตามลำดับการเรียงลำดับ อินเทอร์เฟซ NavigableSet ขยาย SortedSet NavigableSet มีวิธีการนำทาง เช่น ด้านล่าง พื้น เพดาน ฯลฯ
HashSet, LinkedHashSet และ TreeSet เป็นคลาสบางคลาสที่ใช้อินเทอร์เฟซ SetHashSet ใช้อินเทอร์เฟซ Set ไม่รักษาลำดับที่แทรกไว้ หากใส่ค่าเป็น a, x, b อาจเก็บเป็น x, a, b LinkedSet รักษาลำดับที่แทรกไว้ หากองค์ประกอบถูกแทรกในลำดับ a, x, b ลำดับการจัดเก็บจะเป็น a, x, b TreeSet ใช้ Set และ NavigableSet มันไม่ได้รักษาลำดับของการแทรก แต่เก็บองค์ประกอบในลำดับที่เรียงลำดับ หากลำดับที่แทรกคือ a, c, b องค์ประกอบจะถูกเก็บไว้เป็น a, b, c HashSet, LinkedHashSet และ TreeSet ทั้งหมดจะไม่มีองค์ประกอบที่ซ้ำกัน
ความคล้ายคลึงกันระหว่างรายการและชุดคืออะไร
- ทั้งอินเทอร์เฟซรายการและชุดขยายอินเทอร์เฟซคอลเลกชัน
- ทั้งรายการและตั้งค่าการดำเนินการสนับสนุนเช่นการเพิ่ม, การลบองค์ประกอบ
รายการและชุดต่างกันอย่างไร
รายการเทียบกับชุด |
|
List Interface เป็นอินเทอร์เฟซย่อยของคอลเลกชันที่มีวิธีการดำเนินการ เช่น แทรก ลบตามดัชนี | Set Interface เป็นอินเทอร์เฟซย่อยของคอลเล็กชันที่มีวิธีการดำเนินการ เช่น แทรก ลบองค์ประกอบ ในขณะที่ยังคงรักษาองค์ประกอบเฉพาะไว้ |
ชั้นเรียน | |
ArrayList, Vector และ LinkedList เป็นคลาสที่ใช้อินเทอร์เฟซรายการ | HashSet, LinkedHashSet และ TreeSet เป็นคลาสที่ใช้ Set interface |
การทำซ้ำองค์ประกอบ | |
รายการรองรับการทำซ้ำขององค์ประกอบ | Set ไม่รองรับองค์ประกอบที่ซ้ำกัน องค์ประกอบมีเอกลักษณ์ |
สรุป – รายการเทียบกับชุด
คอลเลกชันใช้เพื่อจัดเก็บองค์ประกอบแบบไดนามิก ภาษาการเขียนโปรแกรมเช่น Java มีส่วนต่อประสานคอลเลกชัน รายการและชุดเป็นสองอินเทอร์เฟซที่เป็นของอินเทอร์เฟซคอลเลกชัน อินเทอร์เฟซทั้งสองขยายคอลเล็กชัน บทความนี้กล่าวถึงความแตกต่างระหว่างรายการและชุด ความแตกต่างที่สำคัญระหว่าง List และ Set คือ List รองรับการจัดเก็บองค์ประกอบเดียวกันหลายครั้งในขณะที่ Set ไม่รองรับการจัดเก็บองค์ประกอบเดียวกันหลายครั้ง Set รักษาองค์ประกอบที่ไม่ซ้ำกันเสมอ