2017-07-18 59 views
0

HashMap<Shop, String> shopMap反对,我就把两个值:比较对象从哈希表中的Android

shopMap(shopModel1, shopModel1.getName()); 
shopMap(shopModel2, shopModel2.getName()); 

在我的方法搜索店铺的名字我经过店铺的对象像shopModel1等同于获得了他的名字:

public String getNameForShop(Shop filter) { 
     return shopMap.get(filter); 
    } 

但我得到空。对象具有相同的所有值。有什么方法可以使用对象从哈希映射中获取商店名称?

+3

shopMap(shopModel1.getName(),shopModel1);尝试与反向 – Pavya

+0

你在哪里把数据放在shopMap中? – akhilesh0707

+0

它取决于'Shop'内的'equals()'/'hashCode()'实现。在你的案例中最简单的解决方案可能只是交换你的键/值,所以'getName()'被用作键,尽管你当然也可以使用'Shop'作为你的键。 – PPartisan

回答

1

将对象作为关键值是不好的。按名称映射。

我猜对象映射,实际上,它发生在对象的内存地址。然后在地图上搜索它不会比较对象字段的对象,只是地址。

HashMap<String, Shop> shopMap; 
if(shopMap.get("shopname").equals(anotherShop)){ 
    //do staff 
}