//该循环嵌套有问题,若有两个月有数据的话会出现数组生成长度两倍,弃用,改为下面用法
// for (int j=0;j<sixMonth.size();j++){
// String nowMonth = sixMonth.get(j);
// for (int k=0;k<monthly.size();k++){
// String date = monthly.get(k).getDate();
// if (nowMonth.equals(date)){
// data.add(monthly.get(k).getPolicyNumber());
// }else{
// data.add(0);
// }
// }
// }
目的是从数据库取出最近六个月的销售情况(有的月份是空的,取回的长度根据有数据的月份而定),所以要处理一下,重新组装list,没有值得月份为0,有值则为取回的值:
这是之前写的代码,问题是:当monthly数组有两个数值时,生成的数组为[0,0,0,0,0,0,0,0,8,32,0],重复生成一个长度;
int pointer = 0; //定义一个指针,拿到的数据有几个(几个月有数据)
for (int j=0;j<sixMonth.size();j++){
String nowMonth = sixMonth.get(j);//获取自定义六个月的每一个
String date = monthly.get(pointer).getDate();//拿第一个数据的月份
if (nowMonth.equals(date)){ //如果这个月份有数据就赋值
data.add(monthly.get(pointer).getPolicyNumber());
if (pointer < monthly.size() - 1) { //如果指针小于获取的数据长度(有几个月有数据)
pointer++; //指针就++.避免下标越界,且只有匹配到了第一个值,才开始匹配第二个
}
}else{ //不匹配则给赋值0
data.add(0);
}
}
此为更改后的代码,即只有月份数据sixMonth中当前月份和monthly数组中有对应的值时,monthly数组指针才会向后移动一位,这样避免了数据重复问题
if (pointer < monthly.size() - 1)是为了使monthly数组不要越界,拿回来有几个值就只能移动该长度-1的位置.