双重for循环优化

    假设两个链表List<Obj> oldList, List<Obj> newList。

    Obj的结构为:

class Obj {
    String code;
    String value;
}

    实现如果 newObj.code = oldObj.code,则 newObj.value = oldObj.code

    穷举法:

    public void selectOld2New1(List<Obj> oldList, List<Obj> newList) {
        int i = oldList.size() - 1;
        int j = newList.size() - 1;
        for (; i >= 0; i--) {
            for (; j >=0; j--) {
                Obj oldO = oldList.get(i);
                Obj newO = newList.get(j);
                if (oldO.code.equals(newO.code)) {
                    newO.value = oldO.value;
                    break;
                }
            }
        }
    }


    hash优化:

    public void selectOld2New2(List<Obj> oldList, List<Obj> newList) {
        int i = oldList.size() - 1;
        int j = newList.size() - 1;
        HashMap<String, Obj> map = new HashMap<String, Obj>();
        for (i = oldList.size() - 1; i >= 0; i--) {
            Obj oldO = oldList.get(i);
            map.put(oldO.code, oldO);
        }
        
        for (j = newList.size() - 1;j >=0; j--) {
            Obj newO = newList.get(j);
            String code = newO.code;
            if (map.containsKey(code)) {
                newO.value = ((Obj)map.get(code)).value;
            }
        }
    }

     M为oldList的长度,N为newList的长度,穷举法的时间复杂度为N*M,hash法的时间复杂度为N+M。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值