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คลาส
GO TO FULL VERSION