“ฝึกสมองสักหน่อยดีไหม ฉันหวังว่าสมองจะยังคงทำงานได้ดีอยู่”
"ก่อนหน้านี้ ในตารางของคอนเทนเนอร์และคอลเลกชัน คุณเห็นว่าอินเทอร์เฟซเดียวกันสามารถมีการใช้งานที่หลากหลาย ตอนนี้ฉันจะบอกคุณว่าทำไมเราถึงต้องการสิ่งนั้น และArrayListแตกต่างจากLinkedList อย่างไร "
"ประเด็นก็คือคอลเลกชั่นอาจถูกนำไปใช้งานในรูปแบบต่างๆ กัน และไม่มีการใช้งานใดที่เหมาะสมเสมอไป ในแนวทางหนึ่ง การดำเนินการบางอย่างรวดเร็ว แต่บางวิธีอาจทำได้ช้า ในทางกลับกันอาจเป็นจริงสำหรับอีกแนวทางหนึ่งไม่มีขนาดเดียวที่สมบูรณ์แบบ เหมาะกับทุกโซลูชั่น"
"นั่นคือเหตุผลที่ตัดสินใจใช้หลายเวอร์ชันของคอลเล็กชันเดียวกันการใช้งานแต่ละครั้งควรได้รับการปรับให้เหมาะสมกับชุดการดำเนินการที่แคบนี่คือที่มาของคอลเล็กชันต่างๆ ลองศึกษาสองคลาสตามตัวอย่าง: ArrayListและLinkedList "
"ภายในArrayListถูกใช้งานเป็นอาร์เรย์ธรรมดานั่นเป็นเหตุผลที่การแทรกองค์ประกอบตรงกลางทำให้เราต้องเปลี่ยนองค์ประกอบที่ตามมาทั้งหมดก่อน แล้วจึงใส่องค์ประกอบใหม่ลงในช่องว่าง การรับและการตั้งค่าองค์ประกอบ (get, set ) เป็นไปอย่างรวดเร็วเนื่องจากการดำเนินการเหล่านี้เป็นเพียงการจัดการกับองค์ประกอบอาร์เรย์ที่เกี่ยวข้อง"
" LinkedListมีโครงสร้างภายในที่แตกต่างกัน มันถูกนำไปใช้เป็นรายการที่มีองค์ประกอบที่เชื่อมต่อกัน : ชุดขององค์ประกอบที่แตกต่างกัน ซึ่งแต่ละองค์ประกอบจะเก็บการอ้างอิงถึงองค์ประกอบถัดไปและก่อนหน้าในรายการ หากต้องการแทรกองค์ประกอบลงตรงกลางของรายการดังกล่าว คุณต้องเปลี่ยนการอ้างอิงของเพื่อนบ้านในอนาคตเท่านั้นอย่างไรก็ตาม ในการรับองค์ประกอบหมายเลข 130 คุณต้องเรียกใช้แต่ละออบเจ็กต์ตั้งแต่ 0 ถึง 130กล่าวอีกนัยหนึ่งการดำเนินการ get และ set จะช้าดูตารางต่อไปนี้ :"
คำอธิบาย | การดำเนินการ | รายการอาร์เรย์ | รายการที่เชื่อมโยง |
---|---|---|---|
รับองค์ประกอบ | รับ | เร็ว | ช้า |
ตั้งค่าองค์ประกอบ | ชุด | เร็ว | ช้า |
เพิ่มองค์ประกอบ (ที่ส่วนท้ายของรายการ) | เพิ่ม | เร็ว | เร็ว |
แทรกองค์ประกอบ (ในตำแหน่งใดก็ได้) | เพิ่ม (i, ค่า) | ช้า | เร็ว |
ลบองค์ประกอบ | ลบ | ช้า | เร็ว |
"เข้าใจแล้ว ตอนนี้ฉันเริ่มเข้าใจแล้ว มีหลักเกณฑ์หรือกฎใดบ้างที่ช่วยให้ฉันรู้ว่าคอลเลกชันใดดีที่สุดในสถานการณ์เฉพาะ"
"เพื่อให้ง่าย ฉันจะให้กฎต่อไปนี้แก่คุณ: หากคุณจะแทรก (หรือลบ) องค์ประกอบที่อยู่ตรงกลางคอลเล็กชันบ่อยๆ ควรใช้ LinkedList ในกรณีอื่นๆ ทั้งหมดArrayListทำงานได้ดีกว่า"
"เราจะเจาะลึกว่าโครงสร้างเหล่านี้มีโครงสร้างอย่างไรในบทเรียนขั้นสูง แต่ตอนนี้เราจะฝึกใช้"
GO TO FULL VERSION