使用hashMap进行比较而不给出预期结果

时间:2013-04-08 11:55:19

标签: java android map comparison

手头的问题是,当我尝试从hashmap中提取值时,它会返回null。

我有hashMap个实例:

Map<Marker,Tag> theHashMap = new HashMap<Marker,Tag>();

其中tag是一个类,其中包含有关marker的一些简单信息,而marker是一个Google地图marker

我在活动开始时添加到HashMap,这一切都发生在

theHashMap.put(mapController.AddMarker(new Tag(1, "City Of Dundee", DUNDEE_LOCATION, "untagged",), new Tag(1, "City Of Dundee", DUNDEE_LOCATION, "untagged",));

其中mapController是一个处理与googleMap相关的所有内容的类。

mapControllerAddMarker会返回已添加到地图中的marker

填充hashMap

将其传递给onMarkerClickListener以供日后参考。

我打电话 来自hashMap.get(marker); marker listener内的marker marker是被点击的hashMap

它总是返回null,我认为这可能是因为onMarkerClick侦听器中的hashMap.get(marker.getTitle());是一个单独的实例,但是我尝试制作指向原始的指针而它没有用,我也试过{{1并且marker.getID()认为它会比较那些标题,但它以相同的结果结束。

如果需要,我会添加更多信息但是现在,还有其他方法可以根据点击的标记从hashMap中获取值吗?

1 个答案:

答案 0 :(得分:1)

在此哈希地图中的代码hashMap.put(marker,key);中,您使用了密钥 - &gt; custom obje ct(mapper)。

因此,当您通过键调用时,它将返回null。 provide key (mapper)对象应与with put (mapper) key.

匹配的位置

你必须在Mapper类中覆盖equals和hashcode方法来解决这个问题。

修改

HashMap key mapper object(custom object)override。由于自定义对象(Mapper对象)是HashMap中的关键,我们必须hashcode等于Mapper class If key as Primitives(int) or String Object, no need to do the above thing. 以获取精确值。

{{1}}