具有特定键的Java数组

时间:2016-10-29 16:58:22

标签: java arrays

你能不能使用HashMap / HashTable创建一个以哈希为键的java数组(只允许使用数组!)?

数组应该如下所示: [hashkey] - > [JAVAOBJECT]

哈希键由函数计算(例如,它可以是“-51”)

2 个答案:

答案 0 :(得分:1)

不,你不能。数组的索引(不是键)是0到array.length - 1之间的整数。

此外,Java数组并不稀疏。如果你可以(假设)分配一个足够大的数组,它可以容纳所有可能的int值作为“键”,它将占用2 ^ 32 * N个字节,其中N是指针的大小。这对于实现关联数组/散列来说是非常浪费的方式。

(你不能,因为JLS允许的理论上最大可能的数组大小是2 ^ 31 - 1个元素!)

话虽如此,有一些特殊用途的地图类会使用比int更少的内存将HashMap键映射到引用。

例如:https://developer.android.com/reference/android/util/SparseArray.html

答案 1 :(得分:0)

你的方法是你appp的陷阱.. 请记住,哈希码不是我的,而且java可以产生破坏程序完整性的冲突

例如:“Aa”和“BB”具有相同的哈希码: 2112

所以,如果你有一个整数数组(哈希码),突然有2个人来玩,你将永远找不到为什么代码不起作用

使用实现ID的具体类...