繁体   English   中英

将ArrayList添加到另一个ArrayList中

[英]Add ArrayList into another ArrayList

我有两节课:

产品

01; Desinfectante
02; Aerosol
03; Limpia Vidrio
04; Desengrasante
05; Mata mosquitos
06; Mata cucarachas
07; Aceite en aerosol

说明

01;1;Elevar la masa hasta llegar a tal punto;0;10
01;1;Mezclar este material con anterior;1;15
01;2;Relevar;2;5
01;3;Llevar;00;0
02;1;Descripcion;7;2
02;2;Descripcion;6;2
02;2;Descripcion;00;0
03;1;Descripcion;1;1
03;1;Descripcion;2;9
03;2;Descripcion;00;0
03;3;Descripcion;5;2
03;4;Descripcion;6;2
03;4;Descripcion;3;10
04;1;Descripcion;00;0
04;2;Descripcion;1;2
04;3;Descripcion;1;0
04;3;Descripcion;2;2
04;3;Descripcion;3;2
04;4;Descripcion;7;1
04;4;Descripcion;6;2
05;1;Descripcion;7;20
05;1;Descripcion;6;9
05;2;Descripcion;00;0
05;3;Descripcion;1;2
05;3;Descripcion;2;10
06;1;Descripcion;2;12
06;1;Descripcion;4;1
06;1;Descripcion;6;8
06;2;Descripcion;5;4
06;2;Descripcion;7;2
07;1;Descripcion;1;12
07;1;Descripcion;2;2
07;2;Descripcion;3;19
07;2;Descripcion;4;4
07;2;Descripcion;00;2
07;2;Descripcion;5;12

事情是这样的:我必须将ArrayList指令插入到Products中。 它们之间的链接是第一个数字,即产品的代码。

我尝试了两件事,第一件事:

public static ArrayList<Productos> InsertInstInProd(ArrayList<Instrucciones> instructions, ArrayList<Productos> products)
{ 
    for (int i = 0; i < products.size()-1; i++)
    {
        int n = 0;
        for (int j = 0; j < instructions.size()-1; j++)
        {
            int first = products.get(i).getNumero();
            int second = instructions.get(j).getCodProd();

            if (first == second)
            {
                products.get(i).getInstr().get(n).setCodIns(instructions.get(j).getCodIns());
                products.get(i).getInstr().get(n).setCodProd(instructions.get(j).getCodProd());
                products.get(i).getInstr().get(n).setDescr(instructions.get(j).getDescr());
                products.get(i).getInstr().get(n).setMat(instructions.get(j).getMat());
                products.get(i).getInstr().get(n).setMatNec(instructions.get(j).getMatNec());

                n++;
            }
        }
        n = 0;
    }

第二个:

public static ArrayList<Productos> InsertInstInProd(ArrayList<Instrucciones> instructions, ArrayList<Productos> products)
{ 
    for (int i = 0; i < products.size()-1; i++)
    {
        int n = 0;
        for (int j = 0; j < instructions.size()-1; j++)
        {
            int first = products.get(i).getNumero();
            int second = instructions.get(j).getCodProd();

            if (first == second)
            {
                products.get(i).setInstr(instructions);
                n++;
            }
        }
        n = 0;
    }

    return products;
}

由于以下原因,您正在获取NullPointerException

     products.get(i).getInstr().get(n).setCodIns(instructions.get(j).getCodIns());

您没有检查列表products.get(i).getInstr()是否包含元素。 当列表为empty ,当您以products.get(i).getInstr().get(0)对其进行访问时,它会抛出NullPointerException因为尝试获取空列表的第一个元素。 因此,在执行此操作之前,请确保products.get(i).getInstr()不为空。

如果它们是同一类型,则可以直接添加整个arraylist:

   products.get(i).getInstr().addAll(instructions); // again make sure that is not empty.

如果您只想替换,请使用:

    products.get(i).setInstr(instructions.get(j)); 

产品类别



    package productsandinstructions;

    import java.util.List;

    public class Product {
        private int productId;
        private String productName;
        private List instructions;

        public int getProductId() {
            return productId;
        }

        public void setProductId(int productId) {
            this.productId = productId;
        }

        public String getProductName() {
            return productName;
        }

        public void setProductName(String productName) {
            this.productName = productName;
        }

        public List getInstructions() {
            return instructions;
        }

        public void setInstructions(List instructions) {
            this.instructions = instructions;
        }
    }

教学班



    package productsandinstructions;

    public class Instruction {
        private int productId;
        private int instructionId;
        private String instDesc;
        private int mat;
        private int matNec;
        private boolean done;

        public int getProductId() {
            return productId;
        }

        public void setProductId(int productId) {
            this.productId = productId;
        }

        public int getInstructionId() {
            return instructionId;
        }

        public void setInstructionId(int instructionId) {
            this.instructionId = instructionId;
        }

        public String getInstDesc() {
            return instDesc;
        }

        public void setInstDesc(String instDesc) {
            this.instDesc = instDesc;
        }

        public int getMat() {
            return mat;
        }

        public void setMat(int mat) {
            this.mat = mat;
        }

        public int getMatNec() {
            return matNec;
        }

        public void setMatNec(int matNec) {
            this.matNec = matNec;
        }

        public boolean isDone() {
            return done;
        }

        public void setDone(boolean done) {
            this.done = done;
        }
    }

主班



    package productsandinstructions;

    import java.util.List;

    public class ProductsAndInstructionsMain {

        private List products;
        private List instructions;

        public List getProducts() {
            return products;
        }

        public void setProducts(List products) {
            this.products = products;
        }

        public List getInstructions() {
            return instructions;
        }

        public void setInstructions(List instructions) {
            this.instructions = instructions;
        }

        public static void main(String[] args) {
            ProductsAndInstructionsMain main = new ProductsAndInstructionsMain();
            main.mergeProductsAndInstructions();
        }

        public void mergeProductsAndInstructions() {
            for (Product product : products) {
                for (Instruction instruction : instructions) {
                    if ((!(instruction.isDone())) && (instruction.getProductId() == product.getProductId())) {
                        product.getInstructions().add(instruction);
                        instruction.setDone(true);
                    }
                }
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM