用Java制作整数键映射是否可以?

m4t*_*4tx 7 java indexing arraylist map

就像标题一样.做这样的事情是可以的:

HashMap<Integer, Object> foo = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

或者可能有更好的容器允许在任何索引处添加值?当说"更好"时,我的意思是"拥有更好的性能",然后"使用更少的RAM".

ArrayList<Object> bar = new ArrayList<>();
bar.add(10_000, new Object());
Run Code Online (Sandbox Code Playgroud)

想要在上面的代码中做一些事情,但这当然不适用于ArrayList.我想做的清单很稀疏; 索引是传播的 - 这就是我考虑HashMap而不是ArrayList的原因.

问候.

Ste*_*n C 3

您正在做的(实际上)是用来HashMap表示稀疏数组。

这可能是一个合理的实现选择,但其功效取决于您想要实现的目标以及数组的属性。

如果数组足够稀疏,那么您可以使用 aHashMap而不是简单数组来节省内存。然而,与非稀疏数组相比,aHashMap使用的内存大约比数组一个数量级。最重要的是,a 上的get和操作比索引简单数组大约慢一个数量级。putHashMap

此外,根据数组的大小和稀疏性,有些表示形式使用的空间明显少于a HashMap(例如 Android 稀疏数组类),但代价是 get/put 性能无法扩展。