Voglio creare un nuovo array di oggetti mettendo insieme due array più piccoli.
Non possono essere nulli, ma la dimensione può essere 0.
Non posso scegliere tra questi due modi: sono equivalenti o uno è più efficiente (ad esempio system.arraycopy () copia interi blocchi)?
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);
o
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]
}
}
L'unica differenza è l'aspetto del codice?
MODIFICARE: grazie per la domanda collegata, ma sembrano avere una discussione irrisolta:
È davvero più veloce se it is not for native types : byte [], Object [], char []? in tutti gli altri casi viene eseguito un controllo del tipo, che sarebbe il mio caso e quindi sarebbe equivalente ... no?
In un'altra domanda collegata, dicono che the size matters a lot, per la dimensione> 24 vince system.arraycopy (), per meno di 10, il ciclo manuale per è meglio ...
Adesso sono davvero confuso.



arraycopy()è una chiamata nativa, che è sicuramente più veloce.