==与equals的区别,实战案例

  本例场景


  Arraylist中每个add()的元素是 (new)一个HashMap, 需要对hashMap中的value判断是否相等,如果相等则remove掉任意一个相同的元素(hashMap)。
 

 代码

   if (type ==2){
            int i=0;
            List<JxmdPurchase> jxmdPurchases = purchaseMapper.selectByExample(new JxmdPurchaseExample());
            if (jxmdPurchases != null && jxmdPurchases.size() > 0) {
                for (JxmdPurchase purchase : jxmdPurchases) {
                    if ( !StrUtil.isEmpty(purchase.getShop()) ){
                        Map<String, Object> map = new HashMap<>();//k是唯一的
                        map.put("id", purchase.getId());
                        map.put("name", purchase.getShop());
                        shopNameList.add((T) map);
                            if (shopNameList.size()>=2 && i-1<shopNameList.size()){
                                HashMap t0 = (HashMap) shopNameList.get(i);
                                HashMap t1 = (HashMap) shopNameList.get(i+1);
//                              String name = String.valueOf(t0.get("name"));
//                              String name1 = String.valueOf(t1.get("name"));
 
           //==与 equals的区别?  本例中使用 == 不会出现remove操作;而使用equals会执行
                                    if (t0.get("name").equals(t1.get("name"))){
//                                if (t0.get("name") == t1.get("name")){
                                    shopNameList.remove(i); }
                                   else {  i++;  }
                            }
                    }
                }
            }

 判断ArrayList中 的两个hashMap是否存在相同的 value。

 场景1 使用 ==来判断。运行结果以及debug分析截图

结果

DeBug分析

 

 

 场景2 -使用 equals来判断

 

 

 综合分析

两组[to,t1] 各自只有 value值的value不同,其他的都一样。

结论:

        ==比较的是value中的value值,也就是字符数组的值, 字符属于基本类型。字符两次的数字不相同,导致 k,v中的value不相等。

而 equals则是比较的是hash值。比较的是地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值