我正在尝试从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"];
答案 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
之后将结果转换为特定数据类型。