【发布时间】:2021-12-21 14:19:50
【问题描述】:
我偶然发现了一些代码,它使用HashMap<Integer,HashMap<Integer, String>> 来存储一个通常 >100.000 行和 10 列的大型 Excel 表。列和行都是连续的整数。我肯定会改用ArrayList<ArrayList<String>> 之类的东西。
那么使用HashMap 有什么显着优势吗?您是否发现任何严重的性能问题(无论是内存还是运行时)?
【问题讨论】:
-
没有。原作者应该使用列表。
-
地图方法(显然)假设一个稀疏矩阵,因为并非几乎所有单元格都被填充。如果所有单元格都被填满,那么使用地图地图就会产生明显的开销。
-
@Kayaman 您可以在不丢弃迭代顺序的情况下使用 null 实现相同的效果
-
@Kayaman 他说它们是连续整数,这意味着非稀疏。带有键 0,1,2,3,... 的地图只是一个糟糕的列表。
-
@Michael 那么看来判决已经成立了。幸运的是,这些天开发人员的记忆力超过了理智。他们可能从某个地方复制粘贴了代码。
标签: java performance arraylist hashmap