小编jam*_*563的帖子

存储在磁盘上的 HashMap 从磁盘读回非常慢

我有一个 HashMap 存储外部 uid,然后它存储为给定 uid 设置的不同 id(我们的应用程序的内部)。

例如:

  • 123.345.432=00001
  • 123.354.433=00002

地图由 uid 检查以确保将使用相同的内部 id。如果某些内容重新发送给应用程序。

DICOMUID2StudyIdentiferMap 定义如下:

private static Map DICOMUID2StudyIdentiferMap = Collections.synchronizedMap(new HashMap());
Run Code Online (Sandbox Code Playgroud)

但是,如果我们成功加载,加载将覆盖它,否则它将使用默认的空 HashMap。

它通过执行以下操作从磁盘读回:

FileInputStream f = new FileInputStream( studyUIDFile );  
ObjectInputStream s = new ObjectInputStream( f );

Map loadedMap = ( Map )s.readObject();
DICOMUID2StudyIdentiferMap = Collections.synchronizedMap( loadedMap );
Run Code Online (Sandbox Code Playgroud)

使用以下方法将 HashMap 写入磁盘:

FileOutputStream f = new FileOutputStream( studyUIDFile );
ObjectOutputStream s = new ObjectOutputStream( f );

s.writeObject(DICOMUID2StudyIdentiferMap);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在 Eclipse 中本地运行的性能很好,但是当应用程序在机器上正常使用时,HashMap 需要几分钟才能从磁盘加载。加载后,通过查看 DICOMUID2StudyIdentiferMap.put(..., ...) 是否会返回一个值来检查以前的值也需要很长时间。

我在两种情况下都加载了相同的地图对象,它是一个 ~400kb 的文件。它包含的 HashMap …

java hashmap writetofile

0
推荐指数
1
解决办法
1406
查看次数

标签 统计

hashmap ×1

java ×1

writetofile ×1