【问题标题】:remove common element from two array list in android从android中的两个数组列表中删除公共元素
【发布时间】:2016-05-16 13:04:35
【问题描述】:

你好朋友我有两个数组列表 mArrayListMySkuVarientsmArrayListAllVarients 我想从这两个数组列表中删除公共元素并将其存储第三个 mArrayListCommonVarients所以下面是我的代码

        mArrayListMySkuVarients =new ArrayList<>();
        mArrayListAllVarients=new ArrayList<>();

        mArrayListCommonVarients=new ArrayList<>(mArrayListAllVarients);


 GetProductDetail.ProductVarientData mProductVarientData=new GetProductDetail.ProductVarientData();
    mProductVarientData.setSku("2");
    mProductVarientData.setColor("Red");
    mArrayListMySkuVarients.add(mProductVarientData);

    GetProductDetail.ProductVarientData mProductVarientData1=new GetProductDetail.ProductVarientData();
    mProductVarientData1.setSku("1");
    mProductVarientData1.setColor("Green");
    mArrayListMySkuVarients.add(mProductVarientData1);

    GetProductDetail.ProductVarientData mProductVarientData2=new GetProductDetail.ProductVarientData();
    mProductVarientData2.setSku("4");
    mProductVarientData2.setColor("Blue");
    mArrayListMySkuVarients.add(mProductVarientData2);




    GetProductDetail.ProductVarientData mProductVarientData3=new GetProductDetail.ProductVarientData();
    mProductVarientData3.setSku("2");
    mProductVarientData3.setColor("Red");

    mArrayListAllVarients.add(mProductVarientData3);

    GetProductDetail.ProductVarientData mProductVarientData4=new GetProductDetail.ProductVarientData();
    mProductVarientData4.setSku("1");
    mProductVarientData4.setColor("Green");

    mArrayListAllVarients.add(mProductVarientData4);

    GetProductDetail.ProductVarientData mProductVarientData5=new GetProductDetail.ProductVarientData();
    mProductVarientData5.setSku("4");
    mProductVarientData4.setColor("Blue");

    mArrayListAllVarients.add(mProductVarientData5);

    GetProductDetail.ProductVarientData mProductVarientData6=new GetProductDetail.ProductVarientData();
    mProductVarientData6.setSku("3");
    mProductVarientData4.setColor("Yellow");

    mArrayListAllVarients.add(mProductVarientData6);


for(GetProductDetail.ProductVarientData apv : mArrayListAllVarients) {
                        for (GetProductDetail.ProductVarientData pv : mArrayListMySkuVarients) {
                            if (apv.getSku() == pv.getSku() && apv.getColor().equalsIgnoreCase(pv.getColor())) {
                                mArrayListCommonVarients.remove(pv);

                            }
                        }
                    }

当我运行上面的代码时,它不会删除我的重复值,它会为我提供 mt 第三个数组列表中的所有数据,那么我该如何解决这个问题?你的所有建议都很有价值

【问题讨论】:

标签: java android arraylist


【解决方案1】:

您使用的 setSku 正在接受一个字符串值

mProductVarientData4.setSku("1");
mProductVarientData5.setSku("4");
.....

在 if 语句中你使用 ==

if (apv.getSku() == pv.getSku() && apv.getColor().equalsIgnoreCase(pv.getColor()))

使用 .equals() 检查是否有相同的对象,因为 == 表示它们指向的是相同的对象。

把代码改成

if (apv.getSku().equals(pv.getSku()) && apv.getColor().equalsIgnoreCase(pv.getColor()))

【讨论】:

    【解决方案2】:
    if (apv.getSku().equals(pv.getSku()) && apv.getColor().equalsIgnoreCase(pv.getColor())) {
                                mArrayListCommonVarients.remove(pv);
    
                            }
    

    使用 .equals() 安装 ==

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多