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



所以我知道哈希映射通常有键和值。我环顾四周,有人建议,如果我想显示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);

所以,我放空白的部分实际上是我需要帮助的部分。我如何映射todo和描述?

提前谢谢。

在我告诉你如何完成你的要求之前,你试过编译这个程序吗?目前,您的程序不会编译。hashmap需要一个对象类型为ListItem的值。在put((调用中传递的是String对象。

您的ListItem类是这样的吗?

class ListItem {
String todo;
String description;
}

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

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

获得todo和description(问题中代码的前两行(后,需要创建一个ListItem对象,将tododescription作为参数传递给构造函数。

ListItem listItem = new ListItem(todo, description);

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

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

要回读待办事项和描述,您需要这样做-

ListItem item = dataToSave.get(userId);   //whatever userid key you want to retrieve data from
System.out.println("UserId: " + userId + ", Todo: " + item.todo + ", Desc: " + item.desc);

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

最新更新