这个似乎有点怪,用for吗?不知道一下代码是否满足你的需求。 Area [] area = new Area[list.size()/4];//理论上你的list数目必须是4的倍数,因为Area有4个属性嘛 for (int i = 0; i < area.length; i++) { area[i].setP1(String.valueOf(list.get(i * 4))); area[i].setP2(String.valueOf(list.get(i * 4 + 1))); area[i].setP3(String.valueOf(list.get(i * 4 + 2))); area[i].setP4(String.valueOf(list.get(i * 4 + 3))); }
不考虑通用性 for(int i = 0; i < list.size(); i ++){ int index = i % 4; switch(index){ case 0: area.p1 = list.get(i); case 1: area.p2 = list.get(i); case 2: area.p3 = list.get(i); case 3: area.p4 = list.get(i); } }考虑通用性的,用反射来遍历arer的属性,循环填充
你list里装的是什么?
想怎么封到area里?
例如list是个长度为23的数组
area是个类,有p1,p2,p3,p4四个属性
我想把list[0]放到p1,list[1]放到p2,list[2]放到p3,list[3]放到p4
list[4]放到p1,list[5]放到p2,list[6]放到p3,list[7]放到p4
.
.
这样,如何解决
Area [] area = new Area[list.size()/4];//理论上你的list数目必须是4的倍数,因为Area有4个属性嘛
for (int i = 0; i < area.length; i++) {
area[i].setP1(String.valueOf(list.get(i * 4)));
area[i].setP2(String.valueOf(list.get(i * 4 + 1)));
area[i].setP3(String.valueOf(list.get(i * 4 + 2)));
area[i].setP4(String.valueOf(list.get(i * 4 + 3)));
}
for(int i = 0; i < list.size(); i ++){
int index = i % 4;
switch(index){
case 0:
area.p1 = list.get(i);
case 1:
area.p2 = list.get(i);
case 2:
area.p3 = list.get(i);
case 3:
area.p4 = list.get(i);
}
}考虑通用性的,用反射来遍历arer的属性,循环填充
之前为什么list中不直接放area 啊!
这样的话你就只有循环这个数组了,每次取4个值.......然后继续
又是list的又是size的..还以为是List..
int s=list.length/4;
if(list.length%4!=0)
s++;
Area[] area=new Area[s];
for(int i=0;;i+=4){
area[i/4]=new Area();
try{
area[i/4].p1=list[i];
area[i/4].p2=list[i+1];
area[i/4].p3=list[i+2];
area[i/4].p4=list[i+3];
}catch(Exception e){
break;
}
}