2010-11-23 16 views
0

Was ist der beste Weg (elegant/effizient), zwei Arrays in ein neues zu kopieren?Kopieren Sie 2 Arrays in ein neues.

Regards,

F

+0

Sie zumindest versuchen sollte vor der Veröffentlichung eine Frage ein wenig suchen .. – posdef

+0

warum nach unten Abstimmung? stackoverflow beantwortet Fragen, die mit der Programmierung zu tun haben – Tyzak

Antwort

0

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); 
5

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] + ", "); 
    } 
+0

Notiert - Ich habe meine Antwort geändert. – Adamski

Verwandte Themen