从android中的两个数组列表中删除公共元素

时间:2016-05-16 13:04:35

标签: java android arraylist

你好朋友我有两个arraylist mArrayListMySkuVarients mArrayListAllVarients ,我想从这两个arraylist中删除常用元素并将其存储在第三个 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第三个arraylist中的所有数据,所以我该如何解决这个问题呢?你的所有建议都很明显

2 个答案:

答案 0 :(得分:0)

您正在使用的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()))

答案 1 :(得分:0)

if (apv.getSku().equals(pv.getSku()) && apv.getColor().equalsIgnoreCase(pv.getColor())) {
                            mArrayListCommonVarients.remove(pv);

                        }

使用.equals()instal ==