在迭代期间有条件地删除自定义对象 ArrayList 元素

Conditionally removing custom object ArrayList elements during iteration

我正在处理 java 要求,我需要根据几个条件删除一些 ArrayList 元素。

这是我的代码:

package com.demo.test;

public class ProductBean {


    public ProductBean(int code,String name,String type,String status){
        this.productCode=code;
        this.productType=type;
        this.productName=name;
        this.productStatus=status;

    }

    public int getProductCode() {
        return productCode;
    }
    public void setProductCode(int productCode) {
        this.productCode = productCode;
    }
    public String getProductName() {
        return productName;
    }
    public void setProductName(String productName) {
        this.productName = productName;
    }
    public String getProductType() {
        return productType;
    }
    public void setProductType(String productType) {
        this.productType = productType;
    }
    public String getProductStatus() {
        return productStatus;
    }
    public void setProductStatus(String productStatus) {
        this.productStatus = productStatus;
    }
    private String productName;
    private String productType;
    private String productStatus;
    private int productCode;


    public String toString(){

        return"prduct details are : "+this.productCode+" "+this.productName+" "+this.productType+" "+this.productStatus;
    }

}

测试Class:

package com.demo.test;

import java.util.ArrayList;
import java.util.Iterator;

public class ProductTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ProductBean p1=new ProductBean(1, "product1", "toy", "S1");
        ProductBean p2=new ProductBean(2, "product2", "toy", "S1");
        ProductBean p3=new ProductBean(3, "product3", "toy", "S1");
        ProductBean p4=new ProductBean(4, "product4", "toy", "S1");
        ProductBean p5=new ProductBean(5, "product5", "toy", "S2");
        ProductBean p6=new ProductBean(6, "product6", "toy", "S2");
        ProductBean p7=new ProductBean(7, "product7", "toy", "S2");
        ProductBean p8=new ProductBean(8, "product8", "toy", "S2");
        ProductBean p9=new ProductBean(9, "product9", "toy", "S2");
        ArrayList<ProductBean> productList=new ArrayList<ProductBean>();
        productList.add(p1);
        productList.add(p2);
        productList.add(p3);
        productList.add(p4);
        productList.add(p5);
        productList.add(p6);
        productList.add(p7);
        productList.add(p8);
        productList.add(p9);

        int requiredProductCode=2;
        String requiredProductStatus="S1";

        Iterator<ProductBean> itr=productList.iterator();
        while(itr.hasNext()){

            ProductBean pbean=itr.next();
            if(pbean.getProductCode()<=requiredProductCode){
                itr.remove();
            }
            if(!pbean.getProductStatus().equals(requiredProductStatus)){
                itr.remove();
            }

        }


        for(ProductBean pbean1:productList){
            System.out.println(pbean1);
        }

    }

}

我必须根据以下条件从列表中删除产品对象。

  1. 当 listObject 的 ProcuductCode 小于或等于 requiredProductCode 对象应该被删除。
  2. 当 listobject 的 productStatus 不等于 requiredProductstatus 对象应该被删除。

Desired/Actual输出

prduct details are : 3 product3 toy S1
prduct details are : 4 product4 toy S1

我尝试使用 AND(&&) OR(||) 运算符实现此目的,但没有获得所需的输出。我最终在内部使用了两个 if 条件,而 loop.Kindly improve suggests improvements for this code piece ..using some logical operators to avoid two if conditions inside the code.

现在,如果两个 if 语句中的条件都为真,您将删除两个而不是一个。您可以将第二个设为 else if 或将两者合并为一个 if,如下所示:

if ((bean.getProductCode()<=requiredProductCode) || (!pbean.getProductStatus().equals(requiredProductStatus)))