你好朋友我有两个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中的所有数据,所以我该如何解决这个问题呢?你的所有建议都很明显
答案 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 ==