我对Java比较陌生,我只想确保正确地获得基本概念.所以我的问题是hashmap与2d数组的不同之处.我将举例说明,如果我错了,有人可以纠正我,那将是很好的.所以
与hashmap相比,您无法直接访问/更改第2个数组的第1个数组.因此,例如,如果你有arr [2] [5]第一个arr [2]你不能将它改为其他东西.换句话说,如果我们有int arr [2] [2]你不能改变它说arr [汽车] [2]而你可以使用hashmap.你根本无法访问它,而你可以使用hashmap.如果你有地图马丁,25你可以很容易地把它变成乔,22.
您可以在第一个值的hashmap中轻松搜索.如果你想从上一个例子中找到马丁的年龄,你可以轻松地搜索马丁,并且将出现25岁.
我被教导过2d数组代表一个表.就像是.
ARR [2] [3]
但实际上你不能在[]网格外访问/更改1和2.这应该只是作为一个想象的帮助来说明2d数组的概念.
如果我错了,请你纠正我,或者对此作出任何补充评论.
谢谢
哈希映射使用键和值,而不是索引.因此,您只能搜索密钥,因此无法访问任何索引.键必须是唯一的,您不能有两个相同的键,如果您尝试重新分配某些键,旧键的值将被替换.在散列映射中,键可以是任何对象(数组的索引必须是数字).关键类型作为数组的索引.如前所述,键可以是任何对象,数组的索引必须是int基元.
这就像比较苹果和橘子一样。
二维数组只是对象的二维网格,HashMap是一种特殊类型的关联数组(也称为字典或映射),它将通用键与通用值关联起来。并不是HashMap唯一存在的,TreeMap例如, a 也存在,它提供了大致相同的接口,但实现完全不同。
另一个主要区别是 anHashMap是为了满足数组中不必要的特定要求:能够存储稀疏键而不浪费太多空间,同时保持 get 和 set 操作的复杂性不变。
这很容易看出:
int[] intMap = new int[10];
HashMap<Integer,Integer> hashIntMap = new HashMap<Integer,Integer>();
Run Code Online (Sandbox Code Playgroud)
现在假设您要插入该对(500,100):
intMap[500] = 100;
hashIntMap.put(500, 100);
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,您需要在数组中有足够的空间(至少 501 个元素)才能访问索引 500 处的单元格。在第一种情况下,HashMap没有这样的要求,因为元素是使用哈希码存储的,并存储在比所需的细胞少很多。
| 归档时间: |
|
| 查看次数: |
5684 次 |
| 最近记录: |