บทความนี้อธิบายวิธีการใช้งาน Java ของการรวมสองอาร์เรย์เป็นหนึ่ง แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ใน Java วิธีรวมสองสาย [] เป็นหนึ่งเดียว?
ดูเหมือนว่าจะเป็นคำถามที่ง่ายมาก อย่างไรก็ตามวิธีการเขียนรหัสอย่างมีประสิทธิภาพและรัดกุมยังคงคุ้มค่าที่จะคิด นี่คือสี่วิธีโปรดดูที่การเลือก
1. Apache-commons
นี่เป็นวิธีที่ง่ายที่สุด ใน Apache-commons มี ArrayUtils.addAll(Object[], Object[]) วิธีที่ช่วยให้เราสามารถทำมันในบรรทัดเดียว:
String[] both = (String[]) ArrayUtils.addAll(first, second);
คนอื่น ๆ ต้องเรียกวิธีการที่ให้ไว้ใน JDK ด้วยตัวเองและห่อมัน
เพื่อความสะดวกฉันจะกำหนดวิธีการเครื่องมือที่สามารถรวมสองอาร์เรย์เข้าด้วยกัน:
static String[] concat(String[] first, String[] second) {}
เพื่อจุดประสงค์ทั่วไปฉันจะใช้ยาชื่อสามัญเพื่อกำหนดตำแหน่งที่เป็นไปได้เพื่อไม่เพียง แต่สตริง [] เท่านั้น
static <T> T[] concat(T[] first, T[] second) {}
แน่นอนถ้า JDK ของคุณไม่รองรับยาชื่อสามัญหรือไม่สามารถใช้งานได้คุณสามารถเปลี่ยน T เป็นสตริงด้วยตนเองได้
2. System.arraycopy ()
สตริงคงที่ [] concat (string [] a, string [] b) {string [] c = สตริงใหม่ [a.length+b.length]; System.arrayCopy (A, 0, C, 0, A. ความยาว); System.arraycopy (B, 0, C, A.Length, B.Length); กลับ c;}ใช้ดังนี้:
สตริง [] ทั้งสอง = concat (ครั้งแรก, วินาที);
3. array.copyof ()
ใน java6 มีวิธี Arrays.copyOf() ซึ่งเป็นฟังก์ชันทั่วไป เราสามารถใช้มันเพื่อเขียนวิธีการผสานทั่วไปมากขึ้น:
สาธารณะคงที่ <t> t [] concat (t [] ครั้งแรก, t [] วินาที) {t [] result = array.copyof (แรก, first.length + second.length); System.arrayCopy (วินาที, 0, ผลลัพธ์, First.length, Second.length); ผลตอบแทนผลลัพธ์;}หากคุณต้องการรวมหลายอย่างคุณสามารถเขียนสิ่งนี้:
สาธารณะคงที่ <t> t [] concatall (t [] ก่อน, t [] ... ส่วนที่เหลือ) {int totallength = first.length; สำหรับ (t [] อาร์เรย์: ส่วนที่เหลือ) {totallength += array.length; } t [] result = array.copyof (แรก, totallength); int offset = first.length; สำหรับ (t [] อาร์เรย์: ส่วนที่เหลือ) {system.arraycopy (อาร์เรย์, 0, ผลลัพธ์, ออฟเซ็ต, array.length); Offset += array.length; } ผลตอบแทนผลลัพธ์;}ใช้ดังนี้:
String [] ทั้งสอง = concat (ครั้งแรก, วินาที); string [] more = concat (แรก, สอง, สาม, สี่);
4. Array.Newinstance
นอกจากนี้คุณยังสามารถใช้ Array.newInstance เพื่อสร้างอาร์เรย์:
ส่วนตัวคงที่ <t> t [] concat (t [] a, t [] b) {final int alen = a.length; Int Blend สุดท้าย = B.Length; if (alen == 0) {return b; } if (blen == 0) {return a; } สุดท้าย t [] result = (t []) java.lang.reflect.array newInstance (a.getClass (). getComponentYpe (), alen + ผสม); System.arraycopy (a, 0, ผลลัพธ์, 0, alen); System.arraycopy (B, 0, ผลลัพธ์, Alen, ผสมผสาน); ผลตอบแทนผลลัพธ์;}สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาที่เกี่ยวข้องกับ Java โปรดตรวจสอบหัวข้อของเว็บไซต์นี้: "สรุปทักษะการดำเนินงาน Java Array", "บทสรุปของตัวละคร Java และทักษะการดำเนินงานสตริง", "สรุปทักษะการดำเนินงานทางคณิตศาสตร์ Java", "การสอนเกี่ยวกับโครงสร้างข้อมูล Java และอัลกอริธึม"
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน