Dynamic Array ใน Java คืออะไร?



ไดนามิกอาร์เรย์ใน Java เป็นอาร์เรย์ประเภทหนึ่งที่มีการปรับปรุงอย่างมากสำหรับการปรับขนาดอัตโนมัติ ข้อ จำกัด เพียงประการเดียวของอาร์เรย์คือขนาดคงที่

อาร์เรย์ใน เป็นโครงสร้างข้อมูลที่เป็นเนื้อเดียวกันที่ใช้ใน Java เป็นวัตถุ อาร์เรย์จัดเก็บค่าหนึ่งหรือหลายค่าของชนิดข้อมูลเฉพาะและจัดทำดัชนีการเข้าถึงเพื่อจัดเก็บค่าเดียวกัน องค์ประกอบเฉพาะในอาร์เรย์ถูกเข้าถึงโดยดัชนีของมัน ในบทความนี้เราจะพูดถึง Dynamic Array ใน Java ตามลำดับต่อไปนี้:

บทนำสู่ Dynamic Array ใน Java

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





สตริง java แยกตัวคั่นหลายตัว
  • ค้นหาด่วน . เช่นเดียวกับอาร์เรย์เมื่อดึงองค์ประกอบที่ดัชนีที่กำหนดใช้เวลา O (1)



  • ขนาดตัวแปร . เราสามารถแทรกองค์ประกอบได้มากเท่าที่เราต้องการและอาร์เรย์แบบไดนามิกจะขยายตามเพื่อเก็บไว้

  • เป็นมิตรกับแคช . เช่นเดียวกับอาร์เรย์อาร์เรย์แบบไดนามิกสามารถวางรายการที่อยู่ติดกันในหน่วยความจำได้ดังนั้นจึงใช้ประโยชน์จากแคชได้อย่างมีประสิทธิภาพ



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

  • กรณีที่เลวร้ายที่สุดช้าต่อท้าย . โดยปกติในขณะที่การเพิ่มองค์ประกอบใหม่ที่ส่วนท้ายของอาร์เรย์แบบไดนามิกจะใช้ O (1) ในหนึ่งอินสแตนซ์ อย่างไรก็ตามหากอาร์เรย์แบบไดนามิกไม่มีดัชนีเพิ่มเติมสำหรับรายการใหม่ก็จะต้องขยายซึ่งใช้เวลา O (n) ในแต่ละครั้ง

  • แทรกและลบราคาแพง เช่นเดียวกับอาร์เรย์องค์ประกอบจะถูกจัดเก็บไว้ติดกัน ดังนั้นในขณะที่เพิ่มหรือลบรายการที่อยู่ตรงกลางอาร์เรย์จำเป็นต้องมีการผลักดันองค์ประกอบอื่น ๆ ซึ่งใช้เวลา O (n) ในแต่ละครั้ง

แผนภาพด้านล่างแสดงวิธีการทำงานของอาร์เรย์แบบเรียลไทม์และแสดงให้เห็นว่าองค์ประกอบต่างๆเรียงซ้อนกันอย่างไร นอกจากนี้ยังแสดงให้เห็นว่าคำสั่งเปลี่ยนไปอย่างไรสำหรับกรณีเฉลี่ยและกรณีที่เลวร้ายที่สุดของฟังก์ชันอาร์เรย์

อาร์เรย์ - อาร์เรย์แบบไดนามิกใน java - edureka

ขนาดเทียบกับความจุ

เมื่อเราเริ่มต้นอาร์เรย์แบบไดนามิกการใช้งานอาร์เรย์แบบไดนามิกจะสร้างอาร์เรย์ขนาดคงที่ที่เข้าใจได้ ขนาดเริ่มต้นสอดคล้องกับการนำไปใช้งาน ตัวอย่างเช่นให้เราสร้างอาร์เรย์การใช้งานเพื่อใช้ดัชนี 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' และเราจะติดต่อกลับโดยเร็วที่สุด