150722

数据对比简化:

有时候我们经常会有数据校验的操作,例如对比2个数组,2个List,简单的方式我们都懂,学校里都教过

例:

List<person>  listA ;

List<person>  listB;

假设集合A和集合B都有10条元素,每条数据都有name属性,现在需要判断B集合name与A集合name相同的和不相同的,

最直接的方式是,也是我们最早接触过的遍历方式去对比:

String same;

String notSame;

for(int  a=0 ; a < listA.size() ; a++){

      for(int b = 0 ;b< listB.size() ; b++){

             if(listA.get(a).name().equals(listB.get(b).name()){

                            same + = listB.get(b).name() +“,”;

             }else{

                            notSame += listB.get(b).name() +",";

             }

}

}

这样循环对比就获取了2个字符串,same是相同name的字符串,并以逗号分隔,而notSame则相反,

这样其实效率是比较低的,这里我们使用了2层for循环,每个list都有10个元素的情况下,那么其实我们循环了100次来进行对比,

那假设我们有100个,1000个元素要对比呢?那效率是极其不客观的。


下面我们来优化该操作:

List  listA ;

List  listB;


Map<String,list>  result = new HashMap<String,list>();

for(int a = 0 ; a < listA.size(); a++){

       result.put(listA.get(a).name(),listA);

}

for(String name  : listB){

      List<person> listC = result.get(name);

      if(listC == null ){

            notSame = result.get(name).name();

      }else{

            same = result.get(name).name();

      }

}

这里我首先遍历集合A将10条数据都放在一个Map中,并将名字作为KEY存放。

在遍历集合B依次用name去get()一下,、可以看的出,系统在循环的工作上只需20次即完成了2个集合的对比。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值