Я хочу створити новий масив об'єктів, складаючи два менших масиви.
Вони не можуть бути нульовими, але розмір може бути 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]
}
}
Єдина різниця - вигляд коду?
EDIT: дякую за зв’язане запитання, але, схоже, у них невирішена дискусія:
Це справді швидше, якщо it is not for native types: byte [], Object [], char []? у всіх інших випадках виконується перевірка типу, що було б моїм випадком і тому було б еквівалентно ... ні?
Що стосується іншого пов'язаного питання, вони кажуть, що the size matters a lotдля розміру> 24 system.arraycopy () виграє, для розміру менше 10 краще використовувати інструкцію для циклу ...
Зараз я справді розгублений.



arraycopy()це рідний дзвінок, який, безсумнівно, швидший.