业务逻辑场景:将txt文件中的信息与数据库信息进行比对,比对失败生成相应的错误信息
比如while循环次数为m,for循环次数为n
优化之前,两个循环嵌套 循环次数:m*n
while ((lineTxt = br.readLine()) != null) {
//解析txt文件 根据|分割数据
arrStrings = lineTxt.split("\\|");
// 打印通知报文保单号、总保费 个单层数据量
System.out.println("报文中团单号"+arrStrings[0]+"对应的总保费为"+arrStrings[1]+",个单层数据条数为"+arrStrings[2]);
list.add(arrStrings[0]);
if(mSSRS.getMaxRow()!=0){
for (i=1;i <= mSSRS.getMaxRow();i++){
//说明对账失败原因并写入txt文件
//保单号相同
if(mSSRS.GetText(i,1).equals(arrStrings[0])){
if(!((Double.parseDouble(mSSRS.GetText(i,2)))==(Double.parseDouble(arrStrings[1])))){
str.append(arrStrings[0]+"|"+"2"+"|"+"总保费不一致"+"\n");
mErrorNum++;
}
if(!mSSRS.GetText(i,3).equals(arrStrings[2])){
str.append(arrStrings[0]+"|"+"3"+"|"+"个单层数据量不一致"+"\n");
mErrorNum++;
}
break;
}
}
}else{
logger.info("数据库查询条数为0");
}
if(i>mSSRS.getMaxRow()){
str.append(arrStrings[0]+"|"+"1"+"|"+"核心缺少"+"\n");
mErrorNum++;
}
}
优化之后两个循环的循环次数: m+n
for (i=1;i <= mSSRS.getMaxRow();i++){
map.put(mSSRS.GetText(i,1), mSSRS);
}
while ((lineTxt = br.readLine()) != null) {
arrStrings = lineTxt.split("\\|");
if (map.get(arrStrings[0]) != null) {
if(!((Double.parseDouble(mSSRS.GetText(i,2)))==(Double.parseDouble(arrStrings[1])))){
str.append(arrStrings[0]+"|"+"2"+"|"+"总保费不一致"+"\n");
mErrorNum++;
}
if(!mSSRS.GetText(i,3).equals(arrStrings[2])){
str.append(arrStrings[0]+"|"+"3"+"|"+"个单层数据量不一致"+"\n");
mErrorNum++;
}
}else{
str.append(arrStrings[0]+"|"+"1"+"|"+"核心缺少"+"\n");
mErrorNum++;
}
}