Ich möchte ein neues Array von Objekten erstellen, die zwei kleinere Arrays zusammensetzen.Ist es besser, System.arraycopy (...) als eine for-Schleife zum Kopieren von Arrays zu verwenden?
Sie können nicht null sein, aber die Größe sein kann 0.
ich nicht zwischen diesen beiden Möglichkeiten wählen können: sie sind gleichwertig oder ist ein effizienter (zB System.arraycopy() kopiert ganze Brocken)
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: Dank für verknüpfte Frage, aber sie scheinen eine ungelöste Diskussion zu haben:
Ist es wirklich schneller, wenn it is not for native types
: byte [], Object [], char []? in allen anderen Fällen wird eine Typprüfung durchgeführt, was mein Fall wäre und das wäre äquivalent ... nein?
Auf einer anderen verknüpft Frage, sie sagen, dass the size matters a lot
, für Größe> 24 System.arraycopy() gewinnt, für weniger als 10, Handbuch für Schleife besser ist ...
Jetzt bin ich wirklich verwirrt.
'arraycopy()' ist ein nativer Aufruf, der sicherlich schneller ist. –
würden Sie so freundlich sein, zu antworten und zu erklären, warum? Vielen Dank! – Daren
Haben Sie versucht, die beiden verschiedenen Implementierungen zu vergleichen? – Alex