Was ist der beste Weg (elegant/effizient), zwei Arrays in ein neues zu kopieren?Kopieren Sie 2 Arrays in ein neues.
Regards,
F
Was ist der beste Weg (elegant/effizient), zwei Arrays in ein neues zu kopieren?Kopieren Sie 2 Arrays in ein neues.
Regards,
F
Verwendung System.arraycopy
Vorteil der zugrunde liegenden Hardware nimmt das Array Kopie so effizient wie möglich durchzuführen.
Im Kontext der Frage müssten Sie zweimal System.arraycopy
aufrufen; z.B.
int[] dest = new int[10];
int[] src1 = new int[5];
int[] src2 = new int[5];
// Populate source arrays with test data.
for (int i=0; i<5; ++i) {
src1[i] = i;
src2[i] = i + 100;
}
System.arraycopy(src1, 0, dest, 0, src1.length);
System.arraycopy(src2, 0, dest, src1.length, src2.length);
Sie können [System.arraycopy] [1] als here gezeigt.
[1]: http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#arraycopy(java.lang.Object, int, java.lang.Object, int, int)
Mein Ruf erlaubt mir nicht, auf Adamskis Antwort zu kommentieren, aber es ist ein Fehler in dieser Zeile:
System.arraycopy(src2, 0, dest, src1.length - 1, src2.length);
Mit src1.length - 1 als Argument an destPos, überschreiben Sie das letzte Element aus dem Arraysrc1 kopiert. In diesem Fall überschreiben Sie das Element auf Index 4, das das fünfte Element des Arrays ist.
Dieser Code könnte einfacher sein, zu verstehen:
int[] array1 = { 1, 2, 3 };
int[] array2 = { 4, 5, 6, 7 };
int[] array3 = new int[ array1.length + array2.length ];
System.arraycopy(array1, 0, array3, 0, array1.length);
System.arraycopy(array2, 0, array3, array1.length, array2.length);
for (int i = 0; i < array3.length; i++) {
System.out.print(array3[i] + ", ");
}
Notiert - Ich habe meine Antwort geändert. – Adamski
Sie zumindest versuchen sollte vor der Veröffentlichung eine Frage ein wenig suchen .. – posdef
warum nach unten Abstimmung? stackoverflow beantwortet Fragen, die mit der Programmierung zu tun haben – Tyzak