我们可以在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
你试过了吗? –