如何使用嵌套对象访问Java哈希图中的数据

时间:2018-07-12 03:33:17

标签: java android firebase firebase-realtime-database

因此,我了解哈希映射通常具有键和值。我环顾四周,建议如果要显示3个值,则应使用嵌套的哈希图。但是现在,我无法从哈希图中获取数据。请给我有关如何改进以下代码的提示。

初始代码(有效)

String todo = task.getText().toString().trim();
String description = desc.getText().toString().trim();

Map<String, String> dataToSave = new HashMap<>();
        dataToSave.put("todo", todo);
        dataToSave.put("description", description);

当前代码(不起作用)

ListItems是一个Java类,其中定义了待办事项和描述。我想将userid映射到键,并将待办事项+描述作为值映射。

String todo = task.getText().toString().trim();
String description = desc.getText().toString().trim();
String userid = mAuth.getCurrentUser().getUid();

Map<String, ListItem> dataToSave = new HashMap<>();
dataToSave.put("user", userid);
dataToSave.put("todo", BLANK);
dataToSave.put("description", BLANK);

所以,我把空白表示的部分实际上是我需要帮助的部分。如何映射待办事项和说明?

谢谢。

1 个答案:

答案 0 :(得分:0)

在我告诉您如何执行所要求的内容之前,您是否尝试过编译程序?就目前而言,您的程序将无法编译。您的哈希图期望一个对象类型为ListItem的值。在put()调用中传递的是String对象。

您的ListItem类看起来像这样吗?

 1. Thu, 12 Jul 2018 09:31:37 GMT

 2. 2018-07-12T09:31:38Z

如果是,那么您需要添加一个构造函数以实例化ListItem对象。这就是它的样子。

class ListItem {
    String todo;
    String description;
}

一旦获得待办事项和描述(问题中代码的前两行),就需要创建一个ListItem对象,将 todo description 作为参数传递给构造函数。

class ListItem {
    String todo;
    String description;

    ListItem(String to, String desc) {
        todo = to;
        description = desc;
    }
}

完成此操作后,可以将ListItem对象添加到哈希图中。

ListItem listItem = new ListItem(todo, description);

要阅读待办事项和说明,您需要这样做-

Map<String, ListItem> dataToSave = new HashMap<>();
dataToSave.put(userId, listItem);

在这一点上,您似乎对对象没有太多的了解。我建议重新审视教科书中的基础知识,或者从网上阅读大量资源。