Map(或HashMap)需要一段時間來插入,移除和檢索。雖然迄今爲止我所知道的所有其他數據結構並不需要一定的時間,上述操作的時間取決於輸入的大小。爲什麼我們需要除HashMap以外的數據結構
那麼,爲什麼我們需要所有其他數據結構呢?不是HashMap是通用數據結構嗎?
Map(或HashMap)需要一段時間來插入,移除和檢索。雖然迄今爲止我所知道的所有其他數據結構並不需要一定的時間,上述操作的時間取決於輸入的大小。爲什麼我們需要除HashMap以外的數據結構
那麼,爲什麼我們需要所有其他數據結構呢?不是HashMap是通用數據結構嗎?
該地圖表現不是免費的,成本是內存和複雜性。
對於所有不關心性能和不需要訪問集合中的一個元素的情況,都存在其他數據結構。例如,如果您有給定的元素字符串列表,並且您在代碼中使用的唯一用途是打印出此元素列表,則更好的選擇是使用字符串數組。
另一個例子,可能是元素的順序。如果您關心元素的順序,那麼地圖不是您應該使用的數據結構,因爲順序無法保證,所以您必須在每次需要時進行排序。
這些只是兩個例子,對於每個存在的數據結構還有很多其他的例子。
「你不關心性能」當你*關心性能時,你使用不同的數據結構。例如,你可以用'Map
@AndyTurner特別是如果你想索引改變插入或刪除。 –
@AndyTurner我的意思是在獲取價值的過程中表現出色,正如OP所要求的。 –
的HashMap不應該被用來當
int
開始的0.
'是不是HashMap的是通用的數據結構' - ?不,它不保留元素順序並不會允許重複和不會讓你通過索引訪問元素... – rkosegi
嘗試學習Go,其中地圖基本上是唯一的內置數據結構(除了數組)。你*可以*只是使用地圖的東西;但是用map *執行一個集合的新穎性又會很快消失。 –
你從哪裏得知Insert,Remove和Retrieve需要一段時間? ['這個實現爲基本操作提供了恆定的性能(get和put),假設散列函數在桶之間正確地分散元素。「](https://docs.oracle.com/javase/8/docs/ api/java/util/HashMap.html),因爲你不能提供散列函數,但是使用類型的內建函數... – TheConstructor