Я хочу создать новый массив объектов, объединяющий два меньших массива.
Они не могут быть нулевыми, но размер может быть 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
, для выигрыша size > 24 system.arraycopy(), для менее 10, ручной для цикла лучше...
Теперь я действительно смущен.