嵌套循环优化

业务逻辑场景:将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++;
			}
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值