Я хочу создать новый массив объектов, объединив два меньших массива.
Они не могут быть нулевыми, но размер может быть равен 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()это родной вызов, который, безусловно, быстрее.