สวัสดี! ในบทเรียนวันนี้ เราจะพูดถึง 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 การแปลงรายการจาวาเป็นอาร์เรย์มีประโยชน์เมื่อคุณต้องการทดสอบข้อมูล
GO TO FULL VERSION