我們可以在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. 我們可以在用戶配置文件中保存KeyValuePair <K,V>嗎?
- 2. K和V的HashMap默認類型
- 3. 類型參數K不在類型變量K的範圍內
- 4. Apache K意味着WSSSE可以增加一些K嗎?
- 5. 我在哪裏可以在KRL規則集中使用$ K jquery?
- 6. Linq分組 - <k,v>我的'V'在哪裏?
- 7. 我怎樣才能將Coq中的``I'< S k -> H`分成`i <k和i = k`?
- 8. K均值分類
- 9. 類條目<K,V>實現了Map.Entry <K,V>
- 10. Map.Entry是一種原始類型。泛型類型引用地圖<K,V>。實體<K,V>應該
- 11. Mathcad中K最近的鄰居 - 我可以使用哪些函數?
- 12. SortedList <K,V> vs SortedDictionary <K,V> vs詞典<K,V>
- 13. 哪裏可以找到可靠的K-medoid(非K-means)開源軟件/工具?
- 14. 爲什麼在條目<K,V>中輸入參數<K,V>?
- 15. 類型不匹配的返回結構(預計<K, V>,發現<&K, &V>)
- 16. 通用T GetByID <K>(K ID_)
- 17. number xor K - K = number + K xor K,爲什麼?
- 18. 在我的HashMap的HashMap使用<字符串,字符串>作爲重點對象<K,V>
- 19. 流動型:返回類型的函數(K)=> OBJ [k]的
- 20. 是rdd:RDD [(K,V)]中的RDD [(K,V)]類型?
- 21. 將X中的所有x_i拆分爲K個組s.t. var(K中的k的總和(x in k))最小化
- 22. 阿帕奇星火 - 斯卡拉 - HashMap的(K,HashMap的[字符串,雙(V1,V2,..))至((K,V1),(K,V2),......)
- 23. K最近鄰分類器
- 24. K-Medoids聚類分析
- 25. 在java中是否有地圖<k, k>?
- 26. 地圖:在Java地圖中,我可以將一個函數分配給<K,V>對中的值嗎?
- 27. FileHashMap <K, V>
- 28. 使用PyLucene作爲K-NN分類器
- 29. Java Map <K,V>:爲什麼get(object)沒有得到(K)?
- 30. 對於k << N
你試過了嗎? –