Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有已知索引的Java Hashmap和2D数组性能_Java_Arrays_Hashmap - Fatal编程技术网

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

具有已知索引的Java Hashmap和2D数组性能,java,arrays,hashmap,Java,Arrays,Hashmap,我使用Hashmap和2D数组读取excel Hashmap-所有数据都将转换为字符串,并使用唯一的字符串键rowno+colno保存 示例:键11-第1行第1列的数据 2D数组-所有数据将转换为字符串并存储。 arr[00]=“第1行第1列的数据” 一旦储存起来。我需要在我知道索引的地方多次使用这些数据 比如说,如果我想得到第1行第3列的数据,我将使用下面的公式 HAsmap-字符串值=Hm.get(“13”) 2Darray-字符串值=arr[02] 在这种情况下,哪一个更快。我需要存储一个

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

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

2D数组-所有数据将转换为字符串并存储。 arr[00]=“第1行第1列的数据”

一旦储存起来。我需要在我知道索引的地方多次使用这些数据

比如说,如果我想得到第1行第3列的数据,我将使用下面的公式

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

2Darray-字符串值=arr[02]


在这种情况下,哪一个更快。我需要存储一个巨大的数据级别。

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

如果您需要存储所有单元二维数组也会更快,但如果您只需要存储少数单元,则必须使用称为稀疏矩阵的方法,在这种情况下,就所用空间而言,映射是最佳解决方案,且性能相似,因此使用更少的内存更好(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频繁发生,并且使用一个非常大的二维矩阵,使用很少的记录就可以大大降低应用程序的整体速度。

< P>二维数组可以更快地访问数据,但还需要考虑空间占用。

如果您需要存储所有单元二维数组也会更快,但如果您只需要存储少数单元,则必须使用称为稀疏矩阵的方法,在这种情况下,就所用空间而言,映射是最佳解决方案,且性能相似,因此使用更少的内存更好(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频繁发生,并且使用一个非常大的二维矩阵,其中很少的记录被使用,那么你的应用程序的整体速度会大大降低。但最重要的是,你的第一项技术不起作用。什么是键123,是第1行第23列,还是第12行第3列?您应该设计一个包含两个整数的键类,以及一个正确的equals()和hashCode()方法,而不是使用字符串。arr[0][2]也可以访问2D数组。arr[02]这样的符号对于二维数组没有意义,除非您需要第一行,在这种情况下,您可以使用arr[0]。@JBNizet谢谢。你是对的,第一种技术不行。我需要使用2D数组。2D数组应该稍微快一点。但最重要的是,你的第一项技术不起作用。什么是键123,是第1行第23列,还是第12行第3列?您应该设计一个包含两个整数的键类,以及一个正确的equals()和hashCode()方法,而不是使用字符串。arr[0][2]也可以访问2D数组。arr[02]这样的符号对于二维数组没有意义,除非您需要第一行,在这种情况下,您可以使用arr[0]。@JBNizet谢谢。你是对的,第一种技术不行。我需要使用2D数组。谢谢。我会选择数组谢谢。我会选择数组