“ฝึกสมองสักหน่อยดีไหม ฉันหวังว่าสมองจะยังคงทำงานได้ดีอยู่”

"ก่อนหน้านี้ ในตารางของคอนเทนเนอร์และคอลเลกชัน คุณเห็นว่าอินเทอร์เฟซเดียวกันสามารถมีการใช้งานที่หลากหลาย ตอนนี้ฉันจะบอกคุณว่าทำไมเราถึงต้องการสิ่งนั้น และArrayListแตกต่างจากLinkedList อย่างไร "

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

"นั่นคือเหตุผลที่ตัดสินใจใช้หลายเวอร์ชันของคอลเล็กชันเดียวกันการใช้งานแต่ละครั้งควรได้รับการปรับให้เหมาะสมกับชุดการดำเนินการที่แคบนี่คือที่มาของคอลเล็กชันต่างๆ ลองศึกษาสองคลาสตามตัวอย่าง: ArrayListและLinkedList "

ArrayList กับ LinkedList - 1

"ภายในArrayListถูกใช้งานเป็นอาร์เรย์ธรรมดานั่นเป็นเหตุผลที่การแทรกองค์ประกอบตรงกลางทำให้เราต้องเปลี่ยนองค์ประกอบที่ตามมาทั้งหมดก่อน แล้วจึงใส่องค์ประกอบใหม่ลงในช่องว่าง การรับและการตั้งค่าองค์ประกอบ (get, set ) เป็นไปอย่างรวดเร็วเนื่องจากการดำเนินการเหล่านี้เป็นเพียงการจัดการกับองค์ประกอบอาร์เรย์ที่เกี่ยวข้อง"

" LinkedListมีโครงสร้างภายในที่แตกต่างกัน มันถูกนำไปใช้เป็นรายการที่มีองค์ประกอบที่เชื่อมต่อกัน : ชุดขององค์ประกอบที่แตกต่างกัน ซึ่งแต่ละองค์ประกอบจะเก็บการอ้างอิงถึงองค์ประกอบถัดไปและก่อนหน้าในรายการ หากต้องการแทรกองค์ประกอบลงตรงกลางของรายการดังกล่าว คุณต้องเปลี่ยนการอ้างอิงของเพื่อนบ้านในอนาคตเท่านั้นอย่างไรก็ตาม ในการรับองค์ประกอบหมายเลข 130 คุณต้องเรียกใช้แต่ละออบเจ็กต์ตั้งแต่ 0 ถึง 130กล่าวอีกนัยหนึ่งการดำเนินการ get และ set จะช้าดูตารางต่อไปนี้ :"

คำอธิบาย การดำเนินการ รายการอาร์เรย์ รายการที่เชื่อมโยง
รับองค์ประกอบ รับ เร็ว ช้า
ตั้งค่าองค์ประกอบ ชุด เร็ว ช้า
เพิ่มองค์ประกอบ (ที่ส่วนท้ายของรายการ) เพิ่ม เร็ว เร็ว
แทรกองค์ประกอบ (ในตำแหน่งใดก็ได้) เพิ่ม (i, ค่า) ช้า เร็ว
ลบองค์ประกอบ ลบ ช้า เร็ว

"เข้าใจแล้ว ตอนนี้ฉันเริ่มเข้าใจแล้ว มีหลักเกณฑ์หรือกฎใดบ้างที่ช่วยให้ฉันรู้ว่าคอลเลกชันใดดีที่สุดในสถานการณ์เฉพาะ"

"เพื่อให้ง่าย ฉันจะให้กฎต่อไปนี้แก่คุณ: หากคุณจะแทรก (หรือลบ) องค์ประกอบที่อยู่ตรงกลางคอลเล็กชันบ่อยๆ ควรใช้ LinkedList ในกรณีอื่นๆ ทั้งหมดArrayListทำงานได้ดีกว่า"

"เราจะเจาะลึกว่าโครงสร้างเหล่านี้มีโครงสร้างอย่างไรในบทเรียนขั้นสูง แต่ตอนนี้เราจะฝึกใช้"