Java 在hashmap上使用自定义类型之前,我应该先做什么?
我想使用集合来承载我的数据对,顺序不重要,允许重复值,并且我需要快速操作/索引,所以我选择hashmap 我的问题是,在像这样使用它之前,我是否必须先覆盖某些内容Java 在hashmap上使用自定义类型之前,我应该先做什么?,java,collections,Java,Collections,我想使用集合来承载我的数据对,顺序不重要,允许重复值,并且我需要快速操作/索引,所以我选择hashmap 我的问题是,在像这样使用它之前,我是否必须先覆盖某些内容 Hashmap<string, myOwnDataType> mhashmap = new Hashmap (); Hashmap mhashmap=newhashmap(); 例如,在TreeSet中,我需要重写comparator以使用我自己定制的数据类型,在Hashmap的情况下我应该做什么准备???您都已设置好
Hashmap<string, myOwnDataType> mhashmap = new Hashmap ();
Hashmap mhashmap=newhashmap();
例如,在TreeSet中,我需要重写comparator以使用我自己定制的数据类型,在Hashmap的情况下我应该做什么准备???您都已设置好了。字符串有自己的比较器。但请添加
(以避免出现类型安全警告)并正确使用大写和小写:
HashMap<String, MyOwnDataType> mHashMap = new HashMap<>();
HashMap mHashMap=newhashmap();
一切就绪。字符串有自己的比较器。但请添加
(以避免出现类型安全警告)并正确使用大写和小写:
HashMap<String, MyOwnDataType> mHashMap = new HashMap<>();
HashMap mHashMap=newhashmap();
映射涉及两种类型:键类型和值类型。要使用自己的类作为值类型,无需执行任何操作。这适用于HashMap
以及TreeMap
<>但是,在<代码> HashMap < /代码>中使用你自己的类型作为关键字类型,你必须考虑以下两个事情:
使用方法HashMap
和hashCode()
查找键值对并确定两个键是否相等。这两种方法都在equals()
中实现,但在大多数情况下,您需要重写Object
和hashCode()
,并确保它们彼此一致(这意味着当equals()
为真时,则a.equals(b)
)a.hashCode()==b.hashCode()
- 当对象用作映射中的键时,它不能再更改(关于
和hashCode()
。通常,哈希映射中使用的键是不可变的equals()
您在示例中使用的字符串可以毫无问题地用作
HashMap
中的键。映射涉及两种类型:键的类型和值的类型。要使用您自己的类作为值类型,您不必做任何事。这适用于HashMap
和TreeMap
<>但是,在<代码> HashMap < /代码>中使用你自己的类型作为关键字类型,你必须考虑以下两个事情:
使用方法HashMap
和hashCode()
查找键值对并确定两个键是否相等。这两种方法都在equals()
对象中实现,但在大多数情况下,您需要覆盖
和hashCode()
并确保它们彼此一致(这意味着当equals()
为真时,则a.equals(b)
)a.hashCode()==b.hashCode()
- 当对象用作映射中的键时,它不能再更改(关于
和hashCode()
。通常,哈希映射中使用的键是不可变的equals()
您在示例中使用的字符串可以毫无问题地用作
HashMap
中的键。javadoc是找到这些问题答案的最佳场所。在您的情况下(字符串键),您不需要做任何事情。如果您执行基于键排序(使用字符串)之类的操作,您不需要做任何事情,如果它基于值,那么您应该使用comparator在myOwnDataType中执行此类排序。@assylias否,我希望字符串是键,myOwnDataType是值,我是否至少需要重写一个comparator?@RajuSharma我需要让myOwnDataType实现comparable吗???@VictorCharlie23,是的,如果您愿意的话o根据值执行一些排序..然后是javadoc是找到这些问题答案的最佳位置。在您的情况下(字符串键),您不必做任何事情。如果您执行基于键排序之类的操作(使用字符串),则无需做任何事,如果它基于值,那么您应该使用comparator在myOwnDataType中执行此类排序。@assylias否,我希望字符串是键,myOwnDataType是值,我是否至少需要重写一个comparator?@RajuSharma我需要让myOwnDataType实现comparable吗???@VictorCharlie23,是的,如果您愿意的话o根据值执行一些排序..然后是