作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Java 中运行一个大循环,其中,在每次传递中,数据都填充到 HashMap 中。循环很长,所以我无法将完整的 HashMap 保存在内存中。所以我需要找到一种方法,在每 1000 次左右的迭代后将 Hashmap 导出到一个文件。
我正在考虑在每 1000 步之后使用序列化将 HashMap 导出到一个文件,清除 HashMap 变量并通过将 next 附加到同一个文件来重复该过程。但是从文件中检索完整的 HashMap 时会出现问题,因为每次导出时都会将元数据附加到文件中。那么有没有其他方法可以做到这一点?
编辑:HashMap结构如下:
HashMap<Key, double[]>
Key {
String name;
BitSet set;
}
最佳答案
是的。您有一个很棒的想法,即每 N 次迭代就清除一次文件,这看起来类似于:
public void exportHashTable() {
HashMap<String, Object> map = new HashMap<>();
map.put("hi", "world");
for (int i = 0; i < map.size(); i++) {
// Some logic ..
if (i % 1000 == 0) {
appendToFile(map);
map.clear();
}
}
}
为了导入您不必读取整个文件,而是逐行读取,以防您导出它(不是序列化它)。假设您将其导出为 CSV
或什至 JSON
。在这种情况下,您可以导入 HashMap 并处理 N 行,然后清除并继续进行。
public void importHashTable() {
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
// process the line, add to hashmap or do some other operation
}
}
}
关于java - 将 HashMap 逐个保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774900/
我尝试在 d3.js 中进行链式转换。为此,我在数组中定义了一组转换,并(尝试)创建一个函数以使用 .each("end", function()) 递归调用它们,以在前一个为完成,但我还没有结果。
我是一名优秀的程序员,十分优秀!