当数组值更改时,将数组的值存储在单独的文件中



所以我正在运行一些运行超过30万次的代码。每次运行此代码时,它最多返回 300k 个值。我目前正在将我得到的结果存储在ArrayList中:

List<List<Object>> thisList = new ArrayList<List<Object>();
for (int i = 0; i < 300000; i++) {
thisList.add(new ArrayList<Object>());
}
for (int i = 0; i < 300000; i++) {
List<Object> result = someCode();
for (Object obj : result) {
thisList.get(obj.id).add(obj.value);
}
}

在此代码中,每次获取obj时,它都有一个值obj.id,该值指定必须存储obj.valueList中的index

随着搜索的继续,将结果存储在其他地方的最有效方法是什么?我的代码似乎在迭代 400 之后停止工作,很可能是由于内存不足问题。我考虑过使用一个简单的文本文档,其中每行代表一个List<Object>但通过一些谷歌搜索,似乎没有办法附加到特定行,所有建议似乎都指向覆盖整个文本文档。我以前从未使用过数据库,这就是为什么我现在试图避免这种情况。

如果有人能给我关于我能做什么的建议,将不胜感激。

编辑:有没有一种不使用数据库的方法,在外部for loop的每次迭代后,可以存储数据? 例如,给定一个当前包含

List 0: obj.value1 obj.value2
List 1: obj.value1 obj.value4
...
List 300000: obj.value3 obj.value8

和结果包含

{obj<1, 100>, obj<0, 3>, ...}

其中每个对象的格式为obj<id, value>,文件变为

List 0: obj.value1 obj.value2 obj.value3
List 1: obj.value1 obj.value4 obj.value100
...
List 300000: obj.value3 obj.value8

您可以使用 JAXB API 将其存储在 XML 文件中 这里有一个关于JAXB的小教程的链接: https://dzone.com/articles/using-jaxb-for-xml-with-java

或者你也可以把它存储在一个JSON文件中,使用json-simple api。 这是另一个小教程: https://stackabuse.com/reading-and-writing-json-in-java/

这些是从 maven 下载 JAXB 和 json-simple 的链接: JAXB: https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api JSON-simple:https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple

希望对您有用

最新更新