我們可以在HashMap<K,V>
中指定K
的哪些類型?它只是數字類型(int
,float
)還是我們可以分配用戶定義的對象?我們可以在HashMap中爲K分配哪些類型<K,V>?
回答
只要具有健全的equals()
和hashCode()
實現,您可以使用任何類型。
嚴格地說:你可以使用任何參考類型,但如果類型不具有的那些方法理智的實施預期將無法正常工作。
請注意,您不能使用基本類型(int
,float
,...),但可以使用它們的包裝類型,而不是(Integer
,Float
,...)。這是因爲泛型只能處理引用類型。
偉大的思想認爲一致:) – Matthew
您可以使用用戶定義的對象,但最好在這些類中明確定義hashCode
和equals
方法。
不能使用int
或float
,因爲它們是不會從Object
超類(提供的hashCode()
和equals()
默認實現)派生的基本類型。如果確實需要使用整數和浮點數,你需要使用它們的對象包裝類Integer
和Float
您可以將任何類分配給K
,包括原始類型的對象形式(Integer
,Character
...)。
您不能使用的唯一類型是基元(和void
),您可以改爲使用包裝類。即密鑰和值必須是一個對象(或null)。
如果你想使用基元,我建議考慮trove4j,它被設計來有效地處理集合中的基元。
任何對象都可以用作Key。
如果使用用戶定義的類對象作爲重點,是對 覆蓋方法的hashCode非常關心,等於。
小心使用可變對象作爲關鍵。如果在對象是地圖中的鍵時以 影響等於比較的方式更改對象的值,則映射的行爲不是 。
- 1. K和V的HashMap默認類型
- 2. 類型參數K不在類型變量K的範圍內
- 3. Apache K意味着WSSSE可以增加一些K嗎?
- 4. Linq分組 - <k,v>我的'V'在哪裏?
- 5. 我在哪裏可以在KRL規則集中使用$ K jquery?
- 6. 我怎樣才能將Coq中的``I'< S k -> H`分成`i <k和i = k`?
- 7. K均值分類
- 8. SortedList <K,V> vs SortedDictionary <K,V> vs詞典<K,V>
- 9. Mathcad中K最近的鄰居 - 我可以使用哪些函數?
- 10. 哪裏可以找到可靠的K-medoid(非K-means)開源軟件/工具?
- 11. 類型不匹配的返回結構(預計<K, V>,發現<&K, &V>)
- 12. 通用T GetByID <K>(K ID_)
- 13. number xor K - K = number + K xor K,爲什麼?
- 14. 流動型:返回類型的函數(K)=> OBJ [k]的
- 15. 將X中的所有x_i拆分爲K個組s.t. var(K中的k的總和(x in k))最小化
- 16. K-Medoids聚類分析
- 17. 使用PyLucene作爲K-NN分類器
- 18. Java Map <K,V>:爲什麼get(object)沒有得到(K)?
- 19. 以k爲基準形心的聚類
- 20. 爲什麼新的`Pick <T,K extends T>`類型允許React的`setState()`中的`K`的子集?
- 21. 返回MyNestedClass <K>當MyNestedClass不是MyNestedClass <K>?
- 22. 在.NET 4.0中從ConcurrentDictionary獲取字典<K,V><K,V>
- 23. 爲什麼我們在集羣網絡中使用k-normial樹
- 24. 如何分配:在Vim中將ALELint分配給C-k?
- 25. 爲什麼地圖<K,V>不能擴展功能<K,V>?
- 26. 哪些分區類型(00..FE)可以在Windows XP中訪問?
- 27. 在matlab中如何做(m,n,k)*(n,k)=(m,k)?
- 28. 在k <n的算法運行時log(n)vs log(k)
- 29. matlab中的k最近鄰分類器
- 30. 我在哪裏可以找到pyspark.ml包中的K-means源代碼?
你試過了嗎? –