Java Hashmap 和已知索引的二维数组性能

标签 java arrays hashmap

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

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

二维数组 - 所有数据将转换为字符串并存储。 arr[00] ="第1行第1列数据"

一旦被存储。我需要在知道索引的情况下多次使用这些数据。

比如说..如果我想获取第一行第三列的数据,我将使用下面的。

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

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

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

最佳答案

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

如果您需要存储所有单元格,二维数组也更快,但如果您只需要存储少数单元格,则必须使用所谓的稀疏矩阵,在本例中为就空间使用而言,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 频繁发生,那么应用程序的整体速度可能会严重减慢,并且使用很少记录的非常大的二维矩阵可以做到这一点。

关于Java Hashmap 和已知索引的二维数组性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143104/

相关文章:

java - 如何在 sessionCreated 方法中检索用户输入的数据

java - 清除列表与新列表

iOS Swift 3 - 过滤器内的过滤器数组

java - 查找对象中某些属性值作为 HashMap 值的出现次数的有效方法

java - 为什么它总是说最低的数字是 Null?

java - 在java中调用父构造函数中的子构造函数

java - Hashmap 会覆盖值。如何添加多个相同的 key ?

java - 创建一个 concat 运算符将 char 数组添加到字符串中。打印字符串对象的引用变量

sql - Postgres数组大小写问题

Java 获取嵌套的 JSON 对象/数组