簡體   English   中英

2d數組和hashmap之間的區別

[英]difference between 2d array and hashmap

我對Java比較陌生,我只想確保正確地獲得基本概念。 所以我的問題是hashmap與2d數組的不同之處。 我將舉例說明,如果我錯了,有人可以糾正我,那將是很好的。 所以

  1. 與hashmap相比,您無法直接訪問/更改第2個數組的第1個數組。 因此,例如,如果你有arr [2] [5]第一個arr [2]你不能將它改為其他東西。換句話說,如果我們有int arr [2] [2]你不能改變它說arr [汽車] [2]而你可以使用hashmap。 你根本無法訪問它,而你可以使用hashmap。 如果你有地圖馬丁,25你可以很容易地把它變成喬,22。

  2. 您可以在第一個值的hashmap中輕松搜索。 如果你想從上一個例子中找到馬丁的年齡,你可以輕松地搜索馬丁,並且將出現25歲。

  3. 我被教導過2d數組代表一個表。 就像是。

ARR [2] [3]

1 [1,2,3]

2 [1,2,3]

但實際上你不能在[]網格外訪問/更改1和2。 這應該只是作為一個想象的幫助來說明2d數組的概念。

如果我錯了,請你糾正我,或者對此作出任何補充評論。

謝謝

哈希映射使用鍵和值,而不是索引。 因此,您只能搜索密鑰,因此無法訪問任何索引。 鍵必須是唯一的,您不能有兩個相同的鍵,如果您嘗試重新分配某些鍵,舊鍵的值將被替換。 在散列映射中,鍵可以是任何對象(數組的索引必須是數字)。 關鍵類型作為數組的索引。 如前所述,鍵可以是任何對象,數組的索引必須是int基元。

這就像比較蘋果和橘子。

2D數組只是對象的二維網格, HashMap是一種特殊的關聯數組(也稱為字典或映射),它將通用鍵與通用值相關聯。 HashMap不是唯一存在的,例如, TreeMap存在,它提供了大致相同的接口,但實現完全不同。

另一個主要區別是HashMap是為了滿足數組中不必要的特定需求:能夠存儲稀疏鍵而不會浪費太多空間,同時保持get和set操作的復雜性不變。

這很容易看出:

int[] intMap = new int[10];
HashMap<Integer,Integer> hashIntMap = new HashMap<Integer,Integer>();

現在假設您要插入對(500,100)

intMap[500] = 100;
hashIntMap.put(500, 100);

在第一種情況下,您需要在數組中有足夠的空間(至少501個元素)才能訪問索引500處的單元格。在HashMap中沒有這樣的要求,因為元素是使用哈希代碼存儲的並且在比所需細胞少得多的細胞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM