“สวัสดี อามีโก้!”
“สวัสดี เอลลี่!”
"วันนี้เราจะพูดถึงโครงสร้างของคอลเลคชันครั้งแล้วครั้งเล่า"
"ฉันรอสิ่งนี้มานานแล้ว"
"คุณรู้แล้วว่าคอลเลกชั่นคืออะไร และคุณรู้วิธีทำงานกับมัน ถึงเวลาจัดระเบียบความรู้ของคุณให้เป็นระบบที่เข้มงวด แล้วคำถาม 'ทำไม' และ 'อย่างไร' มากมายจะหายไป และหลายๆ อย่างก็จะชัดเจนขึ้น"
" อินเทอร์เฟซคอลเลกชัน โครงสร้างการสืบทอดของอินเทอร์เฟซคอลเลกชันมีลักษณะดังนี้:"
![อินเทอร์เฟซคอลเลกชัน - 1](https://cdn.codegym.cc/images/article/a2fdbb30-9379-4a9d-9e6f-ad48f6e72a9c/800.jpeg)
สังเกตสองสิ่ง
อย่างแรกทุกสิ่งที่คุณเห็นที่นี่เป็นอินเทอร์เฟซ
ประการ ที่สองลูกศรหมายถึง «สืบทอด»
"กล่าวอีกนัยหนึ่งคือ รายการ ชุด และคิวจะสืบทอดคอลเลกชัน แต่แผนที่ไม่มี"
"ใช่แล้ว คลาสนามธรรมจะสืบทอดอินเทอร์เฟซเหล่านี้ และในทางกลับกัน การใช้งานที่คุณรู้เกี่ยวกับการสืบทอดคลาสนามธรรมเหล่านั้น: ArrayList, Hashtable, TreeSet,… "
"ใช่คุณ"
"ตอนนี้มาดูกันว่าเมธอดของอินเทอร์เฟซเหล่านี้มีไว้เพื่ออะไร:"
วิธีการของIterable<E>: interface:
วิธีการ | คำอธิบาย |
---|---|
Iterator<T> iterator(); |
ส่งกลับวัตถุตัววนซ้ำ |
"นั่นดูเหมือนจะไม่เพียงพอ"
"นั่นคือจำนวนที่มีอยู่ นั่นคือทั้งหมดสำหรับผู้ทำซ้ำ เราจะไม่กล่าวถึงพวกเขาในตอนนี้ แต่เราจะกล่าวถึงรายละเอียดในเร็วๆ นี้"
วิธีการรวบรวม<E>:อินเทอร์เฟซ:
วิธีการ | คำอธิบาย |
---|---|
boolean add(E e); |
เพิ่มองค์ประกอบในคอลเลกชัน |
boolean addAll(Collection<? extends E> c); |
เพิ่มองค์ประกอบในคอลเลกชัน |
void clear(); |
ลบองค์ประกอบทั้งหมดออกจากคอลเลกชัน |
boolean contains(Object o); |
ตรวจสอบเพื่อดูว่าคอลเลกชันมีองค์ประกอบหรือไม่ |
boolean containsAll(Collection<?> c); |
ตรวจสอบเพื่อดูว่าคอลเลกชันมีองค์ประกอบหรือไม่ |
boolean equals(Object o); |
ตรวจสอบเพื่อดูว่าคอลเลกชันเทียบเท่ากันหรือไม่ |
int hashCode(); |
ส่งกลับรหัสแฮช |
boolean isEmpty(); |
ตรวจสอบเพื่อดูว่าคอลเลกชันว่างเปล่าหรือไม่ |
Iterator<E> iterator(); |
ส่งกลับวัตถุตัววนซ้ำ |
boolean remove(Object o); |
ลบองค์ประกอบออกจากคอลเลกชัน |
boolean removeAll(Collection<?> c); |
ลบองค์ประกอบออกจากคอลเลกชัน |
boolean retainAll(Collection<?> c); |
ลบองค์ประกอบทั้งหมดที่ไม่อยู่ในค |
int size(); |
ส่งกลับขนาดของคอลเลกชัน |
Object[] toArray(); |
แปลงคอลเลกชันเป็นอาร์เรย์ |
<T> T[] toArray(T[] a); |
แปลงคอลเลกชันเป็นอาร์เรย์ |
"ฉันมั่นคงกับทุกอย่างที่นี่แล้ว ฉันใช้วิธีเหล่านี้ครึ่งหนึ่งแล้ว และฉันก็พบกับอีกครึ่งหนึ่ง"
“ดีมาก งั้นเราไปกันต่อเลย”
วิธีการของ รายการ<E>:ส่วนต่อประสาน:
วิธีการ | คำอธิบาย |
---|---|
void add(int index, E element); |
เพิ่มองค์ประกอบที่ตรงกลางของคอลเลกชัน |
boolean addAll(int index, Collection<? extends E> c); |
เพิ่มองค์ประกอบในคอลเลกชัน |
E get(int index); |
ส่งกลับองค์ประกอบตามดัชนี |
int indexOf(Object o); |
ส่งกลับดัชนี (ตัวเลข) ขององค์ประกอบ |
int lastIndexOf(Object o); |
ส่งกลับดัชนีขององค์ประกอบสุดท้าย |
ListIterator<E> listIterator(); |
ส่งกลับ iterator สำหรับรายการ |
ListIterator<E> listIterator(int index); |
ส่งกลับ iterator สำหรับรายการ |
E remove(int index); |
ลบองค์ประกอบตามดัชนี |
E set(int index, E element); |
ตั้งค่าใหม่ตามดัชนี |
List<E> subList(int fromIndex, int toIndex); |
ส่งกลับคอลเลกชันย่อย |
"ที่นี่ก็ไม่มีอะไรแปลกใหม่เช่นกัน ฉันรู้เกือบทุกอย่างเกี่ยวกับคอลเลกชั่นอยู่แล้ว ซึ่งฉันก็อดที่จะดีใจไม่ได้"
"ฉันคิดว่าฉันสามารถหาสิ่งที่ทำให้คุณประหลาดใจได้ แต่มาตรวจสอบอินเทอร์เฟซกันต่อ:"
วิธีการของSet<E>: interface:
วิธีการ | คำอธิบาย |
---|---|
|
"อินเทอร์เฟซ Set ไม่มีเมธอดใหม่ใดๆ — เฉพาะเมธอดที่สืบทอดมาเท่านั้น"
"ใช่ ฉันเห็นว่าอินเทอร์เฟซ Interable ไม่มีอะไรเลย
"ในทางกลับกัน วิธีการที่น้อยลงหมายถึงการจดจำน้อยลง!"
"การมองโลกในแง่ดีที่เห็นพ้องต้องกันในชีวิตของคุณทำให้ฉันมีความสุข"
"อินเทอร์เฟซ Set นั้นสืบทอดมาจากสองอินเทอร์เฟซที่มีเมธอด: SortedSet และ NavigableSet แต่ฉันจะไม่พูดถึงมัน มิฉะนั้นเราจะทำงานไม่เสร็จ"
"ให้ฉันแสดงภาพรวมของคลาสและอินเทอร์เฟซที่อธิบายคอลเล็กชันใน Java"
"เอามาเลย"
"จากนั้นจับแน่น:"
![อินเทอร์เฟซคอลเลกชัน - 2](https://cdn.codegym.cc/images/article/3a5d4b4d-eb0f-41c6-829b-8e8d28d7d1ab/800.jpeg)
“ว้าว ใหญ่จัง!”
"มันก็ไม่ได้ใหญ่ขนาดนั้น นอกจากนี้โปรดจำไว้ว่าคลาสนามธรรมนั้นเป็นทางเลือกทั้งหมด แต่เป็นการดีที่จะจำไว้ว่าคลาสใดใช้อินเทอร์เฟซใด ซึ่งอาจมีประโยชน์ค่อนข้างบ่อย"
"โอ้ ฉันต้องการทราบด้วยว่าคอลเลกชั่นบางคอลเลกชั่นถือว่าล้าสมัยแล้ว"
"อันไหน?"
"ฉันกำลังพูดถึงคลาส Vector, Stack, Dictionary และ Hashtable สิ่งเหล่านี้เป็นคอลเล็กชันสามัญเวอร์ชันซิงโครไนซ์ (ปลอดภัยสำหรับเธรด)"
"แต่ Java ได้เพิ่ม ไลบรารี การทำงานพร้อม กันแบบพิเศษ ที่มีคอลเล็กชันจำนวนมาก ซึ่งไม่เพียงแค่สามารถเข้าถึงได้จากเธรดอื่นเท่านั้น แต่ยังมีการใช้งานที่มีประสิทธิภาพมากกว่าอีกด้วย ConcurrentHashMapมีประสิทธิภาพมากกว่าHashtable มาก "
"คุณสามารถใช้คอลเลกชัน Vector, Stack, Dictionary และ Hashtable ได้ แต่ไม่แนะนำ"
“รับทราบครับ ผมจะจำไว้”
"ขอบคุณ เอลลี่!"
GO TO FULL VERSION