Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java存储、检索和更改值_Java_Arrays_Arraylist - Fatal编程技术网

如何使用java存储、检索和更改值

如何使用java存储、检索和更改值,java,arrays,arraylist,Java,Arrays,Arraylist,我想在数组中保存项目编号、合作编号、合作行、数量,然后将该数组保存在数组列表中。对于数组列表中的一些记录,我希望根据CO编号和CO行检索该记录,并更改其数量。 最简单的方法是什么?也许存储在数组中,并将这些数组存储在数组列表中不是一个好主意。我在一个集成系统中进行开发。因此存在一些限制,如只能使用单个Java类文件等 这就是我迄今为止所尝试的 //Loop arraylist for (int i = 0; i < g_COList.size(); i++) { //Ge

我想在数组中保存项目编号、合作编号、合作行、数量,然后将该数组保存在数组列表中。对于数组列表中的一些记录,我希望根据CO编号和CO行检索该记录,并更改其数量。 最简单的方法是什么?也许存储在数组中,并将这些数组存储在数组列表中不是一个好主意。我在一个集成系统中进行开发。因此存在一些限制,如只能使用单个Java类文件等

这就是我迄今为止所尝试的

//Loop arraylist

for (int i = 0; i < g_COList.size(); i++) {
        //Get array
        String[] CO = (String[]) g_COList.get(i);

        coNumber = CO[0];
        coLine = CO[1];

        if (coNumber.equals("567780000") && coLine .equals("10")) {
            g_COList.set(i, new String[] { "45", "567780000", "10", "5"});
        }

    }
//循环数组列表
对于(int i=0;i

谢谢你

最好的方法是使用一个类,创建一个类CO来存储你的属性{item number,CO number,CO line…等等}

然后,每次您要将元素添加到arraylist时,它将是一个包含您的信息的对象,如下所示:

ArrayList<CO> list = new ArrayList<CO>();
CO object = new CO(.....); // filled with your informations
list.add(object);

您可以在ArrayList中存储普通数组,这是绝对正确的,为了性能起见,您可以使用C样式的for循环,因为与将数据存储在列表中的对象中然后遍历数组列表相比,此代码速度更快。如果您不是在大数据集上操作,我建议您在代码中利用面向对象编程。下面是您可以编写的代码\n

你的物品类别 这是遍历项目列表的方式 我假设getData()方法将为您提供项目列表,然后将对其进行处理。我正在创建另一个项目列表,其中包含您的新值

    ArrayList<Items> list = getData();

    List<Items> newList = list.stream()
            .filter(items -> items.coNumber == 567780000L && items.coLine == 10L)
            .map( items -> Items.builder()
                           .itemNumber(items.itemNumber)
                           .coNumber(items.coNumber)
                           .coLine(items.coLine)
                           .quantity(45L) //new quantity
                           .build())
            .collect(Collectors.toList());

你能把你的代码放在这里吗?我上一篇文章很短,因为它只是由于互联网连接而不完整,你现在可以检查我的建议。如果我想检查CO编号和CO行并更改数量,怎么办?和我一样,我必须循环,对吗?Connumber和COline是第一项和第二项,所以你只需要得到第一项和第二项共同对象,并从中提取想要的信息,我将编辑我的答案,向你展示@RasangaAbeykoonI think@Karam u是如何误解我的问题的。每个CO对象都有这些CO编号、CO行、项目和数量。要求是循环遍历包含COs的数组列表,检索包含特定CO编号和CO行的CO,并更改该CO对象的数量。好的,我现在就知道了,所以很容易做到,我将编辑我的答案,向您展示@RasangaAbeykoon是如何做到的
@lombok.Getter
@lombok.Setter
@lombok.Builder
public class Items {

    private long itemNumber;

    private long coNumber;

    private long coLine;

    private long quantity;

    }
    ArrayList<Items> list = getData();

    List<Items> newList = list.stream()
            .filter(items -> items.coNumber == 567780000L && items.coLine == 10L)
            .map( items -> Items.builder()
                           .itemNumber(items.itemNumber)
                           .coNumber(items.coNumber)
                           .coLine(items.coLine)
                           .quantity(45L) //new quantity
                           .build())
            .collect(Collectors.toList());
list.stream()
            .filter(items -> items.coNumber == 567780000L && items.coLine == 10L)
            .forEach(items -> items.setQuantity(45L));