java - 将ArrayList添加到另一个ArrayList中

标签 java arraylist

我有两个类(class):

产品:

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 插入到产品中。它们之间的链接是第一个数字,即产品的代码。

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

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() 是否有元素。当列表为空并且您以 products.get(i).getInstr().get(0) 方式访问它时,它会抛出 NullPointerException code> 因为试图获取空列表的第一个元素。因此,在执行此操作之前,请确保 products.get(i).getInstr() 不为空。

如果类型相同,可以直接添加整个数组列表:

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

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

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

关于java - 将ArrayList添加到另一个ArrayList中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352984/

相关文章:

java - 有没有办法根据列表是否与索引一样大来选择添加/设置 ArrayList 的索引?

java - 使用 Hibernate 在 ArrayList 中进行 Ajax 响应

java - AddView错误,只显示第一个元素

java - 如何在方法中加入 2 个变量的名称?

java - 将 ImageView 实现为 SurfaceView

java - Java/Swing 中的翻书

java - 在 Java 中比较两个 ArrayList

java:比较二维数组的值与同一列的arraylist的值

Java - 修复了创建新对象的 "add"方法中的错误

javascript - 将两个应用程序合二为一