【发布时间】:2015-10-29 06:40:05
【问题描述】:
在我的 Java 应用程序中,我必须扫描文件系统并递归存储已创建文件的路径以进行早期搜索。
我尝试使用 List/ArrayList 和 HashMap 作为存储结构,但是当文件系统包含 1.000.000+ 个文件时,内存使用量过多。
如何在不使用一半 RAM (8 GB) 的情况下存储和快速检索这些“字符串”?
【问题讨论】:
-
我建议将该数据转储到文件或数据库中。一个纯文本文件就足够了
-
您多久扫描一次文件系统?我们可以说它是恒定的吗?
-
是的,我已经尝试过 DB,但我失去了“速度”,因为在执行过程中我需要多次搜索单个条目。带有 containsKey 的 HashMap 在 O(1) 时间内给我一个结果,但 DB 没有。
-
没有 sibnick,这个文件系统可以改变...每次扫描都可以不同
-
@user3357127 - 具有 1.000.000+ 条记录的 hashmap 几乎总是会发生冲突,因此效率不会是
O(1)