“สวัสดี อามีโก้!”

“สวัสดี เอลลี่!”

"วันนี้เราจะพูดถึงโครงสร้างของคอลเลคชันครั้งแล้วครั้งเล่า"

"ฉันรอสิ่งนี้มานานแล้ว"

"คุณรู้แล้วว่าคอลเลกชั่นคืออะไร และคุณรู้วิธีทำงานกับมัน ถึงเวลาจัดระเบียบความรู้ของคุณให้เป็นระบบที่เข้มงวด แล้วคำถาม 'ทำไม' และ 'อย่างไร' มากมายจะหายไป และหลายๆ อย่างก็จะชัดเจนขึ้น"

" อินเทอร์เฟซคอลเลกชัน โครงสร้างการสืบทอดของอินเทอร์เฟซคอลเลกชันมีลักษณะดังนี้:"

อินเทอร์เฟซคอลเลกชัน - 1

สังเกตสองสิ่ง

อย่างแรกทุกสิ่งที่คุณเห็นที่นี่เป็นอินเทอร์เฟซ

ประการ ที่สองลูกศรหมายถึง «สืบทอด»

"กล่าวอีกนัยหนึ่งคือ รายการ ชุด และคิวจะสืบทอดคอลเลกชัน แต่แผนที่ไม่มี"

"ใช่แล้ว คลาสนามธรรมจะสืบทอดอินเทอร์เฟซเหล่านี้ และในทางกลับกัน การใช้งานที่คุณรู้เกี่ยวกับการสืบทอดคลาสนามธรรมเหล่านั้น:  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

“ว้าว ใหญ่จัง!”

"มันก็ไม่ได้ใหญ่ขนาดนั้น นอกจากนี้โปรดจำไว้ว่าคลาสนามธรรมนั้นเป็นทางเลือกทั้งหมด แต่เป็นการดีที่จะจำไว้ว่าคลาสใดใช้อินเทอร์เฟซใด ซึ่งอาจมีประโยชน์ค่อนข้างบ่อย"

"โอ้ ฉันต้องการทราบด้วยว่าคอลเลกชั่นบางคอลเลกชั่นถือว่าล้าสมัยแล้ว"

"อันไหน?"

"ฉันกำลังพูดถึงคลาส Vector, Stack, Dictionary และ Hashtable สิ่งเหล่านี้เป็นคอลเล็กชันสามัญเวอร์ชันซิงโครไนซ์ (ปลอดภัยสำหรับเธรด)"

"แต่ Java ได้เพิ่ม ไลบรารี การทำงานพร้อม กันแบบพิเศษ ที่มีคอลเล็กชันจำนวนมาก ซึ่งไม่เพียงแค่สามารถเข้าถึงได้จากเธรดอื่นเท่านั้น แต่ยังมีการใช้งานที่มีประสิทธิภาพมากกว่าอีกด้วย  ConcurrentHashMapมีประสิทธิภาพมากกว่าHashtable มาก "

"คุณสามารถใช้คอลเลกชัน Vector, Stack, Dictionary และ Hashtable ได้ แต่ไม่แนะนำ"

“รับทราบครับ ผมจะจำไว้”

"ขอบคุณ เอลลี่!"