2012-04-08 24 views
0

Ich bin ein Spiel für Android Entwicklung dieses Spiel liest ein int [] Array und bildet eine Karte aus ihmPutting zwei Arrays zusammen

jetzt will ich zufällig kleineren Arrays zu diesem Array hinzufügen aber wie kann ich Sie, dass ich keine Ahnung, nicht

ich habe hier gesucht und ich habe nicht eine gute Lösung

+0

Meinen Sie Ihnen die kleinere Arrays zum Ende der Karte Array angehängt werden sollen, oder kopieren Sie sie in die Karte Array bei einem zufälligen Offset ? – ravuya

+0

das ist genau das, was ich meine – user1293780

+0

Der richtige Begriff für die Suche ist vielleicht, "How-to Java-Arrays verketten" und richtige Lösung könnte hier gefunden werden, denke ich: http://StackOverflow.com/Questions/80476/How-to -concatenate-two-arrays-in-java Wenn Sie mit den Indizes spielen, können Sie das zweite Array an einer anderen Position einfügen und es nicht nur am Ende anhängen. –

Antwort

1

finden, wenn Sie es oft tun müssen Arrays keine gute Wahl, weil sie eine feste Größe haben und müssen jedes Mal neu zugewiesen werden, wenn Sie ihre Größe erhöhen. Außerdem müssen Sie Werte aus dem alten Array in die neue, größere, kopieren.

Werfen Sie einen Blick auf ArrayList<Integer> statt.

Wenn es etwas ist, Sie nur von Zeit zu Zeit tun sollten Sie so etwas wie die folgenden

int[] oldArray = new int[Y]; 
int[] smallArray = new int[X]; 
int[] newArray = Arrays.copyOf(oldArray,X+Y); 
for (int i = Y; i < X+Y; ++i) 
    newArray[i] = smallArray[i-Y]; 
+0

wofür ist das Y/X? – user1293780

+0

Sie sind die Größen von Arrays – Jack

0

In Java Array tun ändert sich nicht in der Größe. Sie müssen neue größere/kleinere erstellen und Daten kopieren. This kann helfen.

0

können Sie verwenden

Vector<String> vec = new Vector<String>(); 
vec.add("a"); 
vec.add("b); 

nehme an, dies Ihre alte Vektor (oder Array) mit zwei Daten.

Wenn Sie weitere Daten hinzufügen oder ein weiteres Array hinzufügen möchten.

for(int i=0;i<arr.length;i++) 
{ 
    vec.add(arr[i]); 
} 

Sie auch Länge des Vektors erhalten kann mit

int i=vec.size();