Android - 从2d HashMap获取值

时间:2017-03-01 17:17:09

标签: java android hashmap

我正在尝试从HashMap列表中获取一些值。该列表是多维的,看起来像:

{user_90= {
levels_win={level_2=true, level_1=true}, 
levels_stars={level_2=3, level_1=2}
}}

我使用以下命令从firebase数据库获取列表:

HashMap value = (HashMap) dataSnapshot.getValue();

我如何转换HashMap以获取值:

int star_level_2 = value["user_90"]["levels_stars"]["level_2"];

1 个答案:

答案 0 :(得分:0)

不幸的是(对很多其他人来说幸运的是)Java是一种静态强类型的语言,所以它不会那样工作。此外(我认为这对于几乎所有人来说都是不幸的)你不能直接在标准集合中存储原始类型,例如int。最后,Java不支持运算符覆盖,因此您无法使用“[”“]”按键访问Map中的值。

所以你可以做的是明确指定你的类型,例如

HashMap<String, HashMap<String, HashMap<String, Object>>> container = (HashMap<>) dataSnapshot.getValue();
int star_level_2 = (Integer)(value.get("user_90").get("levels_stars").get("level_2"));

如果您的数据结构具有不同的内部对象深度,那么您对此方法运气不佳,并且您必须在每个级别的每个get之后将结果转换为特定数据类型。