Ich möchte ein neues Array von Objekten erstellen, die zwei kleinere Arrays zusammensetzen.
Sie können nicht null sein, aber die Größe kann 0 sein.
Ich kann nicht zwischen diesen beiden Möglichkeiten wählen: Sind sie gleichwertig oder ist eine effizienter (zum Beispiel system.arraycopy () kopiert ganze Blöcke)?
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);
oder
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]
}
}
Ist der einzige Unterschied das Aussehen des Codes?
EDIT: Danke für die verknüpfte Frage, aber sie scheinen eine ungelöste Diskussion zu haben:
Ist es wirklich schneller, wenn it is not for native types: Byte [], Objekt [], Zeichen []? in allen anderen Fällen wird eine Typprüfung durchgeführt, was mein Fall wäre und daher gleichwertig wäre ... nein?
Bei einer anderen verknüpften Frage heißt es, dass the size matters a lotbei einer Größe von> 24 system.arraycopy () für weniger als 10 das Handbuch für die Schleife besser ist ...
Jetzt bin ich wirklich verwirrt.



arraycopy()ist ein nativer Anruf, der mit Sicherheit schneller ist.