具有已知索引的Java Hashmap和2D数组性能

时间:2016-08-25 10:40:49

标签: java arrays hashmap

我使用Hashmap和2D数组来读取excel。

Hashmap - 所有数据都将转换为字符串,并使用唯一的字符串键rowno + colno保存     示例:键11 - Row1,column1的数据

2D数组 - 所有数据都将转换为字符串并存储。     arr [00] =“Row1,column1的数据”

一旦存储完毕。我需要多次使用这些数据,我知道索引。

说ex ..如果我想获得第1行第3列的数据,我将使用下面的内容。

HAsmap - 字符串值= Hm.get(“13”)

2Darray - String value = arr [02]

在这种情况下哪一个更快。我需要存储大量数据。

1 个答案:

答案 0 :(得分:2)

二维数组访问数据的速度更快,但您还需要考虑占用空间。

如果你需要存储所有单元格,那么二维数组也会更快,但是如果你只需要存储很少的单元格,你就必须使用名为sparsed matrix的东西,在这种情况下就使用的空间而言,Map是最佳解决方案,性能相似,因此使用更少的内存更好(GC更少)。

基本上可以使用以下矩阵

                     bi dimensional array  |     Map      
                     Space     | Speed     |     Space    | Speed
                     -------------------------------------------
                               |           |              |
Store all data       Best      | Best      |     Good     |  Good
Store few            Very bad  | Very good*|  Very good   |  Good  

*)考虑到如果GC频繁发生并且使用非常大的双维矩阵,那么应用程序的整体速度可能会大大降低,其中使用的记录很少。