ความแตกต่างระหว่าง Array และ ArrayList ความแตกต่างระหว่าง

Anonim

อาร์เรย์และ ArrayList คืออะไร?

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

ความแตกต่างระหว่าง Array กับ Arraylist

Resizable

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

คุณไม่สามารถสร้างอาร์เรย์คลาส Generic ของอินเทอร์เฟซใน Java ดังนั้นอาร์เรย์และ Generics ไม่ได้จับมือกันทำให้ไม่สามารถสร้าง Generic Array ได้ด้วยเหตุผลพื้นฐานที่อาร์เรย์มีตัวแปรร่วม ในขณะที่ generics เป็น invariant ในขณะที่อาร์เรย์เป็นโครงสร้างข้อมูลที่มีความยาวคงที่ แต่จะมีอ็อบเจ็กต์ของคลาสเดียวกันหรือ primitives ของชนิดข้อมูลที่ระบุ ดังนั้นถ้าคุณพยายามจัดเก็บข้อมูลประเภทอื่นนอกเหนือจากที่ระบุไว้ในขณะสร้างออบเจกต์ Array ก็จะพ่น "ArrayStoreException" ArrayList ตรงกันข้ามไม่สนับสนุน Generics เพื่อให้มั่นใจถึงความปลอดภัยของชนิด

999 Primitives
  1. ชนิดข้อมูลดั้งเดิมเช่น int, double, long และ char ไม่ได้รับอนุญาตให้ใช้ใน ArrayList ค่อนข้างถือวัตถุและ primitives ไม่ถือเป็นวัตถุใน Java อาร์เรย์ในมืออื่น ๆ สามารถถือ primitives เช่นเดียวกับวัตถุใน Java เพราะเป็นหนึ่งในโครงสร้างข้อมูลที่มีประสิทธิภาพที่สุดใน Java สำหรับการจัดเก็บวัตถุ เป็นประเภทข้อมูลรวมที่ออกแบบมาเพื่อเก็บวัตถุซึ่งสามารถเป็นประเภทเดียวกันหรือชนิดอื่นได้

ความยาว

เพื่อให้ได้ความยาวของอาร์เรย์รหัสต้องเข้าถึงแอตทริบิวต์ length เพราะต้องทราบความยาวเพื่อดำเนินการบน Arrayในขณะที่ ArrayList ใช้เมธอด size () เพื่อกำหนดขนาดของ ArrayList จะค่อนข้างแตกต่างจากการพิจารณาความยาวของอาร์เรย์ แอตทริบิวต์ method size () กำหนดจำนวนองค์ประกอบใน ArrayList ซึ่งจะเป็นความสามารถของ ArrayList
  1. สำหรับตัวอย่าง

:

  1. public class ArrayLengthTest {

public static void main (String [] args) {

ArrayList arrList = new ArrayList (); String [] รายการ = {"หนึ่ง", "สอง", "สาม"};

for (Strings str: items) {

arrList เพิ่ม (STR);

}

ขนาด int = รายการ ขนาด();

ระบบ ออก. println (ขนาด);

การติดตั้ง

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

ประสิทธิภาพ

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

  1. อาร์เรย์ Vs. Arraylist

อาร์เรย์

  1. ArrayList

อาร์เรย์เป็นโครงสร้างข้อมูลที่มีความยาวคงที่ซึ่งไม่สามารถปรับเปลี่ยนความยาวได้เมื่อสร้างอ็อบเจ็กต์อาร์เรย์แล้ว ArrayList

ArrayList มีลักษณะแบบไดนามิกซึ่งหมายความว่าสามารถปรับขนาดตัวเองได้เมื่อต้องการ

ขนาดของอาร์เรย์จะคงที่ตลอดโปรแกรม ขนาดของ ArrayList สามารถเติบโตได้แบบไดนามิกขึ้นอยู่กับความจุและความจุ
ใช้ผู้ดำเนินการมอบหมายเพื่อเก็บองค์ประกอบต่างๆ ใช้แอ็ตทริบิวต์ add () เพื่อแทรกองค์ประกอบ
อาจมีวัตถุต้นแบบรวมถึงอ็อบเจ็กต์ของชนิดข้อมูลเดียวกันหรือต่างกัน ไม่อนุญาตให้ Primitive ใน ArrayList สามารถมีประเภทของอ็อบเจ็กต์เท่านั้น
อาร์เรย์และ Generics ไม่ได้จับมือกัน Generics สามารถใช้งานได้ใน ArrayList
อาร์เรย์สามารถเป็นแบบหลายมิติได้ ArrayList เป็นมิติเดียว
เป็นองค์ประกอบการเขียนโปรแกรมแบบดั้งเดิมที่มีการเก็บองค์ประกอบไว้ในตำแหน่งหน่วยความจำที่อยู่ติดกัน เป็นคลาสจากกรอบคอลเลกชันของ Java โดยที่วัตถุจะไม่ถูกเก็บไว้ในตำแหน่งที่ต่อเนื่องกัน
ตัวแปรความยาวใช้เพื่อกำหนดความยาวของอาร์เรย์ Size () method ใช้เพื่อกำหนดขนาดของ ArrayList
ใช้หน่วยความจำน้อยกว่า ArrayList ในการจัดเก็บองค์ประกอบหรือวัตถุที่ระบุไว้ ใช้หน่วยความจำมากกว่า Array ในการจัดเก็บวัตถุ
การวนซ้ำบนอาร์เรย์ทำได้เร็วกว่าการวนซ้ำบน ArrayList การวนซ้ำของ ArrayList จะช้ากว่าประสิทธิภาพการทำงาน
สรุป แม้ว่าบางคนอาจคิดว่าการใช้อาร์เรย์ในโปรแกรมจะได้ผลลัพธ์เร็วกว่าการทำแบบเดียวกันกับ ArrayLists ด้วยเหตุผลง่ายๆว่าอาร์เรย์เป็นโครงสร้างข้อมูลระดับต่ำประสิทธิภาพอาจแตกต่างกันไปขึ้นอยู่กับการดำเนินงานที่คุณ ' กำลังดำเนินการอีกครั้ง ดีความยาวของอาร์เรย์ได้รับการแก้ไขในขณะที่ขนาดของ ArrayList สามารถเพิ่มหรือลดลงแบบไดนามิก ArrayList จึงมีขอบน้อยกว่าอาร์เรย์ในแง่ของการทำงาน อย่างไรก็ตามแม้จะมีความแตกต่างกัน แต่ก็มีความคล้ายคลึงกันด้วย โครงสร้างข้อมูลทั้งสองเป็นโครงสร้างข้อมูลที่อิงตามดัชนีในภาษาจาวาซึ่งช่วยให้คุณเก็บออบเจ็กต์ได้และทั้งคู่ยอมให้มีค่าเป็นโมฆะเช่นเดียวกับรายการที่ซ้ำกัน ถ้าคุณรู้ขนาดของวัตถุก่อนคุณควรไปกับอาร์เรย์และถ้าคุณไม่แน่ใจเกี่ยวกับขนาดให้ไปที่ ArrayList