CodeGym /จาวาบล็อก /สุ่ม /การแปลง Array เป็น ArrayList ใน Java
John Squirrels
ระดับ
San Francisco

การแปลง Array เป็น ArrayList ใน Java

เผยแพร่ในกลุ่ม
สวัสดี! ในบทเรียนวันนี้ เราจะพูดถึง How To Initialize An Array In Java and How Convert Array to an Arraylist. อาร์เรย์เป็นส่วนขยายของคลาสคอนเทนเนอร์ใน Java และอาจมีประโยชน์ในฐานะวิธีการเก็บชุดของชนิดข้อมูลดั้งเดิมไว้ชั่วคราวเมื่อทราบปริมาณข้อมูลอย่างเจาะจง แต่อาร์เรย์จะคงที่เมื่อสร้าง ซึ่งหมายความว่าเมื่อคุณสร้างอาร์เรย์ คุณจะไม่สามารถเปลี่ยนจำนวนรายการที่เก็บได้ คุณควรจำวิธีเริ่มต้นอาร์เรย์ในจาวา ดูเหมือนว่า:

datatype[] isArray;
โดยที่ประเภทข้อมูลคือประเภทข้อมูลพื้นฐานใดๆ เช่น int, float, long หรือแม้แต่ String คุณยังสามารถใส่วงเล็บหลังการประกาศได้ดังนี้:

datatype isArray[];
แล้วเราจะนำอาร์เรย์แบบสแตติกนี้กับองค์ประกอบจำนวนหนึ่งและแปลงเป็น ArrayList ได้อย่างไร ก่อนอื่นเรามาดูว่า ArrayList คืออะไร

ArrayList

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

การย้ายจาก Array เป็น ArrayList และ ArrayList เป็น Array ใน Java

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

boltInventory.asList(bolts);
ปัญหาของวิธีนี้คือมันไม่ได้สร้าง ArrayList ที่แท้จริง สิ่งที่ทำคือสร้างรายการที่มีขนาดคงที่และไม่เปลี่ยนแปลง คุณจึงยังไม่สามารถเปลี่ยนขนาดแบบไดนามิกได้ การพยายามเพิ่มหรือลบองค์ประกอบจะทำให้เกิดข้อยกเว้น แม้ว่าสิ่งนี้จะมีประโยชน์ แต่ก็ไม่ใช่การแปลงที่แท้จริง แต่เราสามารถใช้สิ่งนี้ได้ การใช้.asList()เป็นอาร์กิวเมนต์ นี่เป็นวิธีที่สองในการแปลงอาร์เรย์เป็นรายการใน Java เนื่องจาก เมธอด .asList()สร้าง List เราจึงสามารถใช้เมธอดนั้นเพื่อส่งการอ้างอิงไปยัง ArrayList จริงของเรา นี่คือวิธีการเริ่มต้น ArrayList:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>();
สิ่งนี้จะสร้าง ArrayList ที่มีเซลล์ว่างสิบเซลล์ อย่างไรก็ตาม สามารถใช้ ()ในตอนท้ายเพื่อส่งอาร์กิวเมนต์เพื่อเติม ArrayList เมื่อรวมกับ เมธอด .asListคุณจะได้:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>(Arrays.asList(bolts));
ซึ่งจะส่งผ่าน List ที่สร้างโดย เมธอด .asList()ไปยัง ArrayList ดังนั้นตอนนี้คุณสามารถจัดการแบบไดนามิกได้ตามต้องการ การใช้เมธอดCollections.addAll()อีกวิธีในการแปลง Array เป็น ArrayList ใน Java คือการใช้เมธอดนี้ ส่งผ่านเนื้อหาของ Array ไปยัง ArrayList ไวยากรณ์ทั่วไปสำหรับวิธีนี้คือ:

Collections.addAll(c, T);
โดยที่cคือปลายทาง และTคือสิ่งที่กำลังผ่านไป สำหรับตัวอย่างของเรา ไวยากรณ์จะมีลักษณะดังนี้:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>():
Collections.addAll(boltsInventory, bolts);
สิ่งนี้จะส่งเนื้อหาทั้งหมดของสลักเกลียว Array ไปยัง ArrayList ใหม่ การแปลง ArrayList เป็น Array อาจมีบางครั้งที่คุณต้องแปลง ArrayList เป็น Array ใน Java หากคุณทำเช่นนั้น ArrayList จะมีเมธอด.toArray(a)โดยที่ a เป็นปลายทาง สำหรับตัวอย่างของเรา ไวยากรณ์จะเป็น:

Integer boltsInventoryArray[] = new Integer{boltsInventory.size()];
// this ensures the newly created array is of the same size as the ArrayList
boltsInventoryArray = boltsInventory.toArray(boltsInventoryArray);
เมื่อคุณเปลี่ยนรายการเป็นอาร์เรย์ใน Java เช่นนี้ คุณกำลังสร้างสำเนาเชิงลึก นั่นคือการอ้างอิงไปยัง Array ทั้งหมดจะแตกต่างจากการอ้างอิงไปยัง ArrayList คุณจึงสามารถจัดการข้อมูลใน Array ได้โดยไม่ต้องเปลี่ยนข้อมูลที่จัดเก็บไว้ใน ArrayList การแปลงรายการจาวาเป็นอาร์เรย์มีประโยชน์เมื่อคุณต้องการทดสอบข้อมูล

บทสรุป

อาร์เรย์มีประโยชน์มากสำหรับการเข้าถึงที่รวดเร็วและการจัดการชุดข้อมูลขนาดเล็กอย่างรวดเร็ว แต่การไม่สามารถเปลี่ยนขนาดได้หมายความว่าอาร์เรย์จะสูญเสียประสิทธิภาพอย่างรวดเร็วสำหรับการใช้งานระยะยาว ArrayList ให้ความยืดหยุ่นและความสามารถในการแทรกและลบโหนดได้ตามต้องการ การเรียนรู้วิธีแปลงอาร์เรย์ Java เป็นรายการจะช่วยปรับปรุงประสิทธิภาพโดยรวมของโปรแกรมของคุณและปรับปรุงรันไทม์ด้วยเช่นกัน
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION