Quero criar uma nova matriz de objetos juntando duas matrizes menores.
Eles não podem ser nulos, mas o tamanho pode ser 0.
Não posso escolher entre essas duas maneiras: são equivalentes ou é mais eficiente (por exemplo, system.arraycopy () copia pedaços inteiros)?
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);
ou
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]
}
}
A única diferença é a aparência do código?
EDITAR: obrigado pela pergunta vinculada, mas eles parecem ter uma discussão não resolvida:
É realmente mais rápido se it is not for native types
: byte [], Object [], char []? em todos os outros casos, uma verificação de tipo é executada, qual seria o meu caso e, portanto, seria equivalente ... não?
Em outra pergunta vinculada, eles dizem que the size matters a lot
, para tamanho> 24, ganha system.arraycopy (), para menos de 10, manual para loop é melhor ...
Agora estou realmente confuso.
arraycopy()
é uma chamada nativa, que certamente é mais rápida.