1. ภาชนะและคอลเลกชัน
คอนเทนเนอร์หรือคอลเลกชันคือคลาสที่ให้คุณจัดเก็บและประมวลผลออบเจกต์หลายรายการพร้อมกัน คุณรู้จักคอนเทนเนอร์สองประเภทแล้ว: อาร์เรย์และรายการ
Java มีคอลเลกชั่นหลายสิบคอลเลกชั่น ซึ่งแต่ละคอลเลกชั่นจัดเก็บอิลิเมนต์ด้วยวิธีเฉพาะของตัวเอง นี่คือบางส่วนของพวกเขา:
ของสะสม | ระดับ | คำอธิบาย |
---|---|---|
|
|
รายการ |
|
รายการที่เชื่อมโยง | |
|
เวกเตอร์ | |
|
ซ้อนกัน | |
|
|
ชุด |
|
||
|
||
|
|
คิว |
|
||
|
|
แผนที่/พจนานุกรม |
|
||
|
ชื่อค่อนข้างคลุมเครือที่นี่ ในภาษาการเขียนโปรแกรมส่วนใหญ่ โครงสร้างข้อมูลทั้งหมดเหล่านี้เรียกว่าคอลเลกชั่น แต่ไม่ใช่ในภาษาจาวา ใน Java คลาสเหล่านี้บางคลาสใช้Collection
อินเทอร์เฟซ ในขณะที่คลาสอื่นๆ ไม่ได้ใช้
ดังนั้น คอลเล็กชันจึงแบ่งออกเป็นคอลเล็กชันในความหมายกว้างและคอลเล็กชันในความหมายแคบ (เฉพาะคอลเล็กชันที่ใช้Collection
อินเทอร์เฟซ)
ดังนั้น เพื่อหลีกเลี่ยงความสับสน เมื่อเราพูดถึงคอลเลคชันเราหมายถึงในความหมายที่แคบ เช่น คลาสที่ใช้Collection
อินเทอร์เฟซ , List
และSet
ประเภทQueue
เป็นคอลเล็กชันทั้งหมด คอลเลกชั่นในความหมายกว้างๆ เรียกว่าตู้คอนเทนเนอร์ ซึ่งรวมถึงประเภทที่ชอบMap
และอาร์เรย์
2. HashSet
ของสะสม
ชั้นHashSet
เรียนเป็นคอลเลกชันชุดทั่วไป ในหลาย ๆ ด้านจะคล้ายกับArrayList
ชั้นเรียน ในบางแง่ มันเป็นเวอร์ชันดั้งเดิมมากกว่า
คุณสามารถสร้างHashSet
วัตถุโดยใช้คำสั่งเช่น:
HashSet<Type> name = new HashSet<Type>();
Type
ประเภทขององค์ประกอบที่เราจะจัดเก็บไว้ในHashSet
คอลเลกชันคือที่ใด
คลาสHashSet
มีเมธอดดังนี้:
วิธี | คำอธิบาย |
---|---|
|
เพิ่มvalue องค์ประกอบในคอลเลกชัน |
|
ลบvalue องค์ประกอบออกจากคอลเลกชัน ส่งกลับ true หากมีองค์ประกอบดังกล่าว |
|
ตรวจสอบว่าคอลเลกชันมีvalue องค์ประกอบ หรือไม่ |
|
ล้างคอลเลกชัน ลบองค์ประกอบทั้งหมด |
|
ส่งกลับจำนวนขององค์ประกอบในคอลเลกชัน |
นี่คือตัวอย่างของการใช้ชุด
มาเขียนโปรแกรมที่บอกลาผู้ใช้หากเขาหรือเธอกล่าวสวัสดี เพื่อให้น่าสนใจยิ่งขึ้น เราจะให้โปรแกรมของเราสามารถเข้าใจคำว่า "สวัสดี" ได้หลายภาษา
รหัส | บันทึก |
---|---|
|
สร้างHashSet วัตถุที่เก็บString องค์ประกอบ เราเพิ่มคำทักทายในภาษาต่างๆ ให้กับ set ตัวแปร อ่านบรรทัดจากคอนโซล หากสตริงอยู่ในชุดคำทักทายของเรา แสดงว่าเรากล่าวคำอำลา |
3. ชุด
คอลเลกชัน นี้Set
ออกแบบมาเพื่อเก็บองค์ประกอบต่างๆ จึงเรียกว่าSet
(ชุด) คอลเลกชันนี้มีสามคุณสมบัติ
การดำเนินการในชุด
มีเพียงสามสิ่งที่คุณสามารถทำได้กับชุด: เพิ่มองค์ประกอบในชุด ลบองค์ประกอบออกจากชุด และตรวจสอบว่าชุดมีองค์ประกอบเฉพาะหรือไม่ แค่นั้นแหละ.
ไม่มีการสั่งซื้อ
องค์ประกอบในคอลเลกชันนี้ไม่มีดัชนี คุณไม่สามารถรับองค์ประกอบจากดัชนี หรือเขียนค่าไปยังคอลเลกชันที่ดัชนีเฉพาะได้ ชุดไม่มีget()
และset()
วิธีการ
องค์ประกอบที่เป็นเอกลักษณ์
องค์ประกอบทั้งหมดในชุดจะไม่ซ้ำกัน ชุดสามารถมีองค์ประกอบได้เพียงหนึ่งอินสแตนซ์เท่านั้น ซึ่งแตกต่างจากรายการ วัตถุอยู่ในชุดหรือไม่ - ไม่มีตัวเลือกที่สาม คุณไม่สามารถเพิ่มสีดำสามครั้งในชุดสีได้ มันมีหรือไม่มี
การหาองค์ประกอบ
เมื่อคุณเพิ่มองค์ประกอบใหม่ ลบองค์ประกอบ หรือตรวจสอบว่ามีองค์ประกอบอยู่ในชุดหรือไม่ การค้นหาองค์ประกอบจะดำเนินการในเมธอด องค์ประกอบที่ผ่านจะถูกเปรียบเทียบกับองค์ประกอบของคอลเล็กชันก่อน จากhashCode()
นั้นหากค่าที่ส่งกลับโดยhashCode()
การจับคู่ ก็จะตามมาequals()
ด้วย
4. การเปรียบเทียบคอลเลกชัน: List
เทียบกับSet
ลองเปรียบเทียบคอลเลกชันสองประเภท: List
และSet
เราจะดูความแตกต่างหลัก เมื่อประเภทหนึ่งได้เปรียบกว่าอีกประเภทหนึ่ง และในทางกลับกัน
ลองเปรียบเทียบ List และ Set โดยใช้ของเล่นเป็นตัวอย่าง
คอList
ลเลกชัน (รายการ)เป็นเหมือนชุดของเล่นที่จัดเรียงตามผนังในห้องเด็กเล่น คุณสามารถเพิ่มของเล่นที่ส่วนท้ายของรายการได้ ถ้าจำเป็นจริง ๆ ก็ใส่ตรงกลางก็ได้ (แต่ต้องย้ายของเล่นที่มีอยู่บางส่วน)
ของเล่นแต่ละชิ้นมีดัชนี คุณสามารถอ้างอิงถึงของเล่นตามดัชนีของมัน และแทนที่ของเล่นหมายเลข 7 ด้วยของเล่นหมายเลข 13 คุณสามารถลบของเล่นหมายเลข 4 ออกจากรายการได้ ในที่สุด คุณสามารถเรียนรู้ดัชนีของของเล่นแต่ละชิ้นในรายการ
คอSet
ลเลกชัน (ชุด)เป็นเหมือนกองของเล่นที่อยู่ตรงกลางพื้น คุณสามารถเพิ่มของเล่นลงในกอง และคุณสามารถเอาของเล่นออกจากกองได้ แต่ของเล่นเหล่านี้ไม่มีดัชนีที่แน่นอนที่เกี่ยวข้องกับพวกเขา
หรือสมมติว่าคุณกำลังเลือกของเล่นสำหรับวันเกิดของลูก อันดับแรก คุณคิดว่าเขามีของเล่นอยู่แล้วหรือไม่ ของเล่นทั้งหมดที่เขามีอยู่แล้วแบบเป็นชุดของเล่นที่คุณจะเลือกซื้อไม่ได้
จากมุมมองนี้ คุณจะเห็นได้ว่าลำดับของของเล่นในชุด "ของเล่นที่มีอยู่แล้ว" ไม่สำคัญ และไม่สำคัญว่าเด็กชายวันเกิดจะมีของเล่นชิ้นใดชิ้นหนึ่งสองชิ้น คุณไม่สนใจลำดับหรือจำนวนของเล่นแต่ละชิ้น สิ่งที่คุณสนใจคือการรู้จักของเล่นแต่ละชิ้นที่มีอยู่ในชุด
สำหรับกรณีเช่นนี้ คุณต้องSet
รวบรวม การใช้งานที่ได้รับความนิยมมากที่สุดคือHashSet
คลาส