我在下面设置代码。
ArrayList<RectF> rects1x1 = new ArrayList<RectF>();
ArrayList<ArrayList<RectF>> arrayedRects = new ArrayList<ArrayList<RectF>>();
和make方法在同一个类中,编写代码:
public void SetDots(int many)
{
switch(shapeID)
{
case 3:
for(int i=0; i<3; i++)
{
for(int j=0; j<100; j++)
{
rects1x1.add(new RectF(j , j , i+110 , i+50 ) );
}
arrayedRects.add(rects1x1);
}
break;
但我认为这个arraylist和arraylist无法保存另一个arraylist或数据。
我该怎么做才能解决它?
答案 0 :(得分:1)
问题是你在外层循环中一遍又一遍地将相同的ArrayList添加到顶层一级。没有必要将rects1x1定义为字段,只需将它放在setDots中(注意“seDots”中的小写前导“s”,这是一种java方法命名约定)。
您需要为外循环的每次迭代实例化一个新的rects1x1,如下所示:
case 3:
ArrayList<RectF> rects1x1;
for(int i=0; i<3; i++){
rects1x1 = new ArrayList<RectF>();
for(int j=0; j<100; j++){
rects1x1.add(new RectF(j , j , i+110 , i+50 ) );
}
arrayedRects.add(rects1x1);
}
break;
答案 1 :(得分:0)
你需要这样做:
for(int i=0; i<3; i++)
{
rects1x1 = new ArrayList<RectF>();
for(int j=0; j<100; j++)
{
rects1x1.add(new RectF(j , j , i+110 , i+50 ) );
}
arrayedRects.add(rects1x1);
}