2011-12-06 37 views
0

我有五個數組。Android/Java:如何將數組添加到數組

int Circle_list[] = { Color.BLACK, 20, 20, 50 }; 
int Rect_list[] = { Color.BLUE, 80, 50, 115, 150 }; 
int Tri_list[] = { Color.RED, 190, 210, 150, 230, 140, 270 }; 
int mixColor[]; 
int mixCoor[]; 

現在,我想的第一個元素(顏色)從Circle_list[]Rect_list[]Tri_list[]加入到mixColor[]。並將所有的休息數字加入mixCoor[]

我該怎麼做? for循環可用於此?

+0

前三個數組無效 - 它們包含'Color'對象和'int'的混合,在Java中,數組中的所有元素都必須是相同類型的(儘管允許使用某些多態性,但這是另一個問題) –

回答

0

//如果你真的想使用原語來代替的ArrayList,這將工作:

int mixColor[] = { Circle_list[0], Rect_list[0], Tri_list[0] }; 
int mixCoor[] = new int[Circle_list.length + Rect_list.length + Tri_list.length - 3]; 

int i, j=0; 

for(i=1; i<Circle_list.length; ++i, j++) { 
    mixCoor[j] = Circle_list[i]; 
} 
for(i=1; i<Rect_list.length; ++i, j++) { 
    mixCoor[j] = Rect_list[i]; 
} 
for(i=1; i<Tri_list.length; ++i, j++) { 
    mixCoor[j] = Tri_list[i]; 
} 

//或更一般的解決方案:

j = 0; 
int[][] shapes = {Circle_list, Rect_list, Tri_list}; 
for (int[] shape : shapes) { 
    for(i=1; i<shape.length; ++i, j++) { 
     mixCoor[j] = shape[i]; 
    } 
} 

//如果您想使用ArrayLists,請參閱: How to convert List<Integer> to int[] in Java?

+0

這真的很有幫助,thx – nich

1
mixColor[] = { Circle_list[0], Rect_list[0], Tri_list[0] }; 

至於mixCoor(我也會重命名你的標識符,它們太相似了) - 訂單是否重要?如果不是,則循環遍歷其他表,檢查當前索引(循環中的計數器)的值是否有效,如果是,則將其添加到新表中。

+1

對於大型數組,System'arrayCopy'傾向於更快:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html – jli

4

我喜歡ArrayList,讓你的情況說,這將是這樣的:

ArrayList<Integer> listCircle = ... 
ArrayList<Integer> listRect = ... 
ArrayList<Integer> listTri = ... 
ArrayList<ArrayList<Integer>> storage = new ArrayList<ArrayList<Integer>>(); 
storage.add(listCircle); 
storage.add(listRect); 
storage.add(listTri);