อาร์เรย์ใน เป็นโครงสร้างข้อมูลที่เป็นเนื้อเดียวกันที่ใช้ใน Java เป็นวัตถุ อาร์เรย์จัดเก็บค่าหนึ่งหรือหลายค่าของชนิดข้อมูลเฉพาะและจัดทำดัชนีการเข้าถึงเพื่อจัดเก็บค่าเดียวกัน องค์ประกอบเฉพาะในอาร์เรย์ถูกเข้าถึงโดยดัชนีของมัน ในบทความนี้เราจะพูดถึง Dynamic Array ใน Java ตามลำดับต่อไปนี้:
- บทนำสู่ Dynamic Array ใน Java
- ขนาดเทียบกับความจุ
- การเพิ่มเป็นสองเท่าจะปรากฏขึ้น
- การลบองค์ประกอบ
- การปรับขนาดไดนามิกอาร์เรย์ใน Java
บทนำสู่ Dynamic Array ใน Java
อาร์เรย์แบบไดนามิกเป็นอาร์เรย์ประเภทหนึ่งที่มีการปรับปรุงอย่างมากสำหรับการปรับขนาดอัตโนมัติ ข้อ จำกัด เพียงประการเดียวของอาร์เรย์คือขนาดคงที่ สิ่งนี้แปลเป็นความหมายที่คุณสามารถระบุจำนวนองค์ประกอบที่อาร์เรย์ของคุณสามารถเก็บไว้ล่วงหน้าได้เท่านั้น ในทางกลับกันอาร์เรย์แบบไดนามิกสามารถขยายได้เมื่อเราเพิ่มองค์ประกอบเพิ่มเติมในแบบเรียลไทม์ ดังนั้นผู้เขียนโค้ดจึงไม่จำเป็นต้องกำหนดขนาดของอาร์เรย์ล่วงหน้า มันมีจุดแข็งอีกสองสามอย่างเช่นกัน:
สตริง java แยกตัวคั่นหลายตัว
ค้นหาด่วน . เช่นเดียวกับอาร์เรย์เมื่อดึงองค์ประกอบที่ดัชนีที่กำหนดใช้เวลา O (1)
ขนาดตัวแปร . เราสามารถแทรกองค์ประกอบได้มากเท่าที่เราต้องการและอาร์เรย์แบบไดนามิกจะขยายตามเพื่อเก็บไว้
เป็นมิตรกับแคช . เช่นเดียวกับอาร์เรย์อาร์เรย์แบบไดนามิกสามารถวางรายการที่อยู่ติดกันในหน่วยความจำได้ดังนั้นจึงใช้ประโยชน์จากแคชได้อย่างมีประสิทธิภาพ
มีข้อเสียบางประการในการใช้อาร์เรย์แบบไดนามิกในโค้ดของเรา แม้ว่าเราจะใช้อาร์เรย์แบบไดนามิกมากกว่าสิ่งใดในแอปพลิเคชันส่วนใหญ่ แต่ก็มีบางกรณีที่ไม่ได้กลายเป็นตัวเลือกที่ต้องการมากที่สุดเนื่องจากข้อ จำกัด
กรณีที่เลวร้ายที่สุดช้าต่อท้าย . โดยปกติในขณะที่การเพิ่มองค์ประกอบใหม่ที่ส่วนท้ายของอาร์เรย์แบบไดนามิกจะใช้ O (1) ในหนึ่งอินสแตนซ์ อย่างไรก็ตามหากอาร์เรย์แบบไดนามิกไม่มีดัชนีเพิ่มเติมสำหรับรายการใหม่ก็จะต้องขยายซึ่งใช้เวลา O (n) ในแต่ละครั้ง
แทรกและลบราคาแพง เช่นเดียวกับอาร์เรย์องค์ประกอบจะถูกจัดเก็บไว้ติดกัน ดังนั้นในขณะที่เพิ่มหรือลบรายการที่อยู่ตรงกลางอาร์เรย์จำเป็นต้องมีการผลักดันองค์ประกอบอื่น ๆ ซึ่งใช้เวลา O (n) ในแต่ละครั้ง
แผนภาพด้านล่างแสดงวิธีการทำงานของอาร์เรย์แบบเรียลไทม์และแสดงให้เห็นว่าองค์ประกอบต่างๆเรียงซ้อนกันอย่างไร นอกจากนี้ยังแสดงให้เห็นว่าคำสั่งเปลี่ยนไปอย่างไรสำหรับกรณีเฉลี่ยและกรณีที่เลวร้ายที่สุดของฟังก์ชันอาร์เรย์
ขนาดเทียบกับความจุ
เมื่อเราเริ่มต้นอาร์เรย์แบบไดนามิกการใช้งานอาร์เรย์แบบไดนามิกจะสร้างอาร์เรย์ขนาดคงที่ที่เข้าใจได้ ขนาดเริ่มต้นสอดคล้องกับการนำไปใช้งาน ตัวอย่างเช่นให้เราสร้างอาร์เรย์การใช้งานเพื่อใช้ดัชนี 10 ดัชนี ตอนนี้เราผนวกสี่รายการเข้ากับอาร์เรย์แบบไดนามิกของเรา ตอนนี้อาร์เรย์แบบไดนามิกของเรามีความยาวสี่ อย่างไรก็ตามอาร์เรย์พื้นฐานของเรามีความยาว 10 ดังนั้นเราสามารถพูดได้ว่าขนาดอาร์เรย์แบบไดนามิกคือสี่และความจุของมันคือ 10 อาร์เรย์แบบไดนามิกจะจัดเก็บดัชนีปลายทางเฉพาะเพื่อติดตามจุดสิ้นสุดของอาร์เรย์แบบไดนามิกและจุดเริ่มต้น จุดเริ่มต้นของความจุพิเศษ
tostring สตริงสาธารณะ ()
การเพิ่มเป็นสองเท่าจะปรากฏขึ้น
อาจมีบางกรณีที่เราพยายามต่อท้ายรายการเข้ากับอาร์เรย์ที่ความจุเต็มแล้ว ดังนั้นในการสร้างอาร์เรย์ไดนามิกของห้องโดยอัตโนมัติจะสร้างอาร์เรย์ใหม่ที่ใหญ่กว่าและอยู่ภายใต้ โดยปกติแล้วจะมีขนาดใหญ่เป็นสองเท่าในการจัดการกับสิ่งใหม่ ๆ ที่เพิ่มเข้ามาซึ่งไม่คาดคิดมาก่อน ดังนั้นการคัดลอกแต่ละรายการจึงไม่เสียเวลา เมื่อใดก็ตามที่ต่อท้ายไอเท็มเข้ากับอาร์เรย์แบบไดนามิกของเราจะสร้างอาร์เรย์พื้นฐานขนาดสองเท่าใหม่โดยอัตโนมัติซึ่งการต่อท้ายไม่ต้องใช้เวลา
การลบองค์ประกอบ
ในขณะที่ลบองค์ประกอบออกจากอาร์เรย์เมธอด 'remove ()' เริ่มต้นจะลบองค์ประกอบออกจากส่วนท้ายและเก็บค่าศูนย์ไว้ที่ดัชนีสุดท้ายโดยอัตโนมัติ นอกจากนี้ยังจะลบองค์ประกอบที่ดัชนีเฉพาะโดยเรียกเมธอด removeAt (i) โดยที่“ I” คือดัชนี เมธอด removeAt (i) จะเปลี่ยนองค์ประกอบด้านขวาทั้งหมดในด้านซ้ายจากดัชนีที่กำหนด
การปรับขนาดอาร์เรย์
เมื่ออาร์เรย์ไม่มีข้อมูลที่ด้านขวาของอาร์เรย์ซึ่งใช้หน่วยความจำที่ไม่จำเป็นมากกว่าเมธอด srinkSize () จะปลดปล่อยหน่วยความจำเพิ่มเติม เมื่อสล็อตทั้งหมดถูกใช้ไปและมีการเพิ่มองค์ประกอบเพิ่มเติมอาร์เรย์ขนาดคงที่พื้นฐานจะต้องเพิ่มขนาด การปรับขนาดจริงมีราคาแพงเนื่องจากเราต้องจัดสรรอาร์เรย์ที่ใหญ่กว่าและคัดลอกองค์ประกอบทั้งหมดจากอาร์เรย์ที่คุณมีรกก่อนที่จะสามารถต่อท้ายรายการใหม่ได้ในที่สุด
ด้านล่างนี้เป็นตัวอย่างของโปรแกรมที่ขนาดอาร์เรย์เต็มและองค์ประกอบใหม่จะถูกคัดลอกไปยังอาร์เรย์ขนาดคู่ใหม่ องค์ประกอบซึ่งเป็นองค์ประกอบสตริงที่เรียกว่า“ Mahavir” เป็นส่วนเสริมของอาร์เรย์เต็มขนาด 3
import java.util.ArrayList import java.util.Arrays import java.util.Scanner คลาสสาธารณะ AddingItemsDynamically {public static void main (String args []) {Scanner sc = new Scanner (System.in) System.out.println (' ป้อนขนาดของอาร์เรย์ :: ') int size = sc.nextInt () String myArray [] = new String [size] System.out.println (' ป้อนองค์ประกอบของอาร์เรย์ (Strings) :: ') สำหรับ (int ผม = 0 ผมเอาท์พุต:
ด้วยเหตุนี้เราจึงมาถึงตอนท้ายของบทความ Dynamic Array ใน Java ฉันหวังว่าคุณจะได้ทราบวิธีการทำงานกับอาร์เรย์แบบไดนามิก
ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ออกแบบมาสำหรับนักเรียนและผู้เชี่ยวชาญที่ต้องการเป็น Java Developer หลักสูตรนี้ออกแบบมาเพื่อให้คุณเริ่มต้นการเขียนโปรแกรม Java และฝึกอบรมแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับเฟรมเวิร์ก Java ต่างๆเช่น Hibernate & Spring
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก 'Dynamic Array in Java' และเราจะติดต่อกลับโดยเร็วที่สุด