2011-12-06 18 views
0

私は5つの配列を持っています。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[]; 

は今、私はmixColor[]Circle_list[]Rect_list[]Tri_list[]から最初の要素(色)を追加します。残りの数字をmixCoor[]に追加します。

どうすればいいですか? forループはこれに対応していますか?

+0

最初の3つの配列は無効です - それらは 'Color'オブジェクトと' int'の組み合せを含んでいますが、Javaでは配列のすべての要素は同じ型でなければなりません(多形性は許されますが、 ) –

答えて

0

//:

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]; 
    } 
} 

//代わりにArrayListを使用する場合は、次も参照してください。 How to convert List<Integer> to int[] in Java?

+0

これは本当に役立ちます、 – 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を使用する場合、これは動作します

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); 
関連する問題