访问Hashmap Java Android中的对象的属性



我正在从db中提取数据并将其放入哈希图中。

HashMap<String,Object> players= new HashMap();
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            players.put(childSnapshot.getKey(), childSnapshot.getValue());
        }
        for (Map.Entry<String, Object> entry : players.entrySet()) {
            Log.d("asd","Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }

log.d输出是:

D/asd: Key = lastpeony, Value = {lat=40.89, long=29.37, avatar=dino}
D/asd: Key = lifesuxtr, Value = {lat=40.8901765, long=29.377306, avatar =petyr}

我要做的是为每个键访问LAT长而AVATAR值。我怎么做 ?因为以后我将使用这些值在地图上绘制标记。

谢谢

如果要在HashMap<String,Object> players映射的每个值中提取特定的内容(latti或longi(,则值类型应该比Object类型更具体。因此,而不是使用HashMap<String,Object>存储players,而是使用HashMap<String,SomeSpecificType>

您使用hashmap .get https://developer.android.com/reference/java/java/util/hashmap.html#get(java.lang.object(

String key = "lastpeon";
Object value = players.get(key);

更改

HashMap<String,Object> players= new HashMap();

to

HashMap<String,Map<String,Object>> players= new HashMap<>();

然后用:

初始化Map
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
    players.put(childSnapshot.getKey(), (Map<String,Object>)childSnapshot.getValue());
}

然后您可以在内部Map s上迭代:

for (Map.Entry<String, Map<String,Object>> entry : players.entrySet()) {
    for (Map.Entry<String, Object> ientry : entry.getValue().entrySet()) {
        Log.d("asd","Key = " + ientry.getKey() + ", Value = " + ientry.getValue());
    }
}

最新更新