ฉันต้องการสร้างอาร์เรย์ของวัตถุใหม่โดยรวมอาร์เรย์ขนาดเล็กสองอาร์เรย์เข้าด้วยกัน
ไม่สามารถเป็นค่าว่างได้ แต่ขนาดอาจเป็น 0
ฉันไม่สามารถเลือกระหว่างสองวิธีนี้: พวกเขาเทียบเท่าหรือมีประสิทธิภาพมากกว่า (เช่น system.arraycopy () คัดลอกทั้งชิ้น)
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
System.arraycopy(publicThings, 0, things, 0, publicThings.length);
System.arraycopy(privateThings, 0, things, publicThings.length, privateThings.length);
หรือ
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
for (int i = 0; i < things.length; i++) {
if (i<publicThings.length){
things[i] = publicThings[i]
} else {
things[i] = privateThings[i-publicThings.length]
}
}
ความแตกต่างเพียงอย่างเดียวคือรูปลักษณ์ของรหัสหรือไม่?
แก้ไข:ขอบคุณสำหรับคำถามที่เชื่อมโยง แต่ดูเหมือนว่าจะมีการอภิปรายที่ยังไม่ได้แก้ไข:
จะเร็วกว่าจริงไหมถ้าit is not for native types: byte [], Object [], char [] ในกรณีอื่น ๆ ทั้งหมดจะมีการดำเนินการตรวจสอบประเภทซึ่งจะเป็นกรณีของฉันและจะเทียบเท่า ... ไม่?
สำหรับคำถามที่เชื่อมโยงอื่น ๆ พวกเขากล่าวว่าthe size matters a lotสำหรับขนาด> 24 system.arraycopy () ชนะสำหรับขนาดเล็กกว่า 10 คู่มือสำหรับลูปจะดีกว่า ...
ตอนนี้ฉันสับสนจริงๆ



arraycopy()เป็นการโทรแบบพื้นเมืองซึ่งเร็วกว่าอย่างแน่นอน