java - 如何使用java存储、检索和更改值
问题描述
我想将项目编号、CO 编号、CO 行、数量保存在数组中,然后将该数组保存在数组列表中。对于数组列表中的某些记录,我想根据 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"});
}
}
谢谢
解决方案
您可以在 ArrayList 中存储普通数组,这绝对没问题,并且您可以使用 C 风格的 for 循环来提高性能,因为与将数据存储在列表内的对象中然后遍历数组列表相比,此代码会更快。如果您不在大型数据集上进行操作,我建议您在代码中利用面向对象的编程。以下是您可以编写的代码。\n
你的物品类别
@lombok.Getter
@lombok.Setter
@lombok.Builder
public class Items {
private long itemNumber;
private long coNumber;
private long coLine;
private long quantity;
}
这就是您遍历项目列表的方式
我假设 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());
您也可以对源流进行更改,但不建议这样做,您应该避免修改流源的状态。从流包文档的非干扰部分我们可以读到:非干扰文档
无论如何,代码如下
list.stream()
.filter(items -> items.coNumber == 567780000L && items.coLine == 10L)
.forEach(items -> items.setQuantity(45L));
推荐阅读
- laravel - 图像未呈现 DOM pdf
- html - 移动响应式图片库
- django - 为什么docker-compose在运行时不将文件复制到virtualbox机器?“python:无法打开文件'manage.py':[Errno 2]没有这样的文件或目录。”]
- python-3.x - 在 Windows 上使用 Python 进行区域选择和屏幕捕获
- java - 如何在Java中查找单个整数中的奇数或偶数
- java - 怎么修 ')',
, 或逗号预期,得到'1' - php - 在 Python 中解密使用 Halite/Libsodium 在 PHP 中加密的字符串
- java - Collection.sort by Date 不适用于所有设备
- youtube-api - 如何配置我的 localhost 以从 Youtube API 请求数据?
- php - 更新和删除——我无法在 Laravel 框架中更新和删除数据库中的数据