gpt4 book ai didi

java - Android,使用给定的类从映射获取值到对象

转载 作者:行者123 更新时间:2023-12-02 01:33:38 25 4
gpt4 key购买 nike

我从 Firestore 获取数据,并将它们保存到映射字符串对象中。
数据如下所示:

[auto-generated key]
fieldname: value
fieldname: value
...

可以有任意数量的字段,它们可以命名为任何内容并存储数字/文本/时间戳。
我将它们放入这样的 map 中:

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

for (QueryDocumentSnapshot document : task.getResult()) {
myMap.put(document.getId(), document.getData());
}

我想做什么:
我有一个数据类,我想将它们存储在这种类型的列表中。

public class DemoData {
public String autoId;
public List<String> fieldNames;
public List<Object> values;

public DemoData() {}
}

所以这是我现在拥有的代码:
我可以获得键列表和字段名-值对列表。

List<String> k = new ArrayList<>();
List<Object> v = new ArrayList<>();

for (Map.Entry<String, Object> entry : map.entrySet()) {
k.add(entry.getKey());
v.add(entry.getValue());
}

(看起来像):
enter image description here

我如何在列表“v”中查看每个项目的每个字段名称-值对并将它们保存到两个单独的列表中。 (然后从中形成 DemoData 对象)。

因此 DemoData 对象将如下所示:

autoId: "YbWQh..."
fieldNames: ["default", "entity_name", "Datum", "fav"...]
values: [false,"Fontos datumok", Timestamp..., false...]

最佳答案

List 有一个构造函数,它接受任何实现 Collection 接口(interface)的数据结构。 Map 具有在实现 Collection 接口(interface)的 Set 中一次性返回所有键和值的方法。您可以使用它们来获取所需格式的数据。

这应该有效

for(int i = 0; i < v.size(); i++) {
DemoData demoData = new DemoData();
demoData.fieldNames = new ArrayList<>(); // line# 1
demoData.values = new ArrayList<>(); //line# 2
demoData.autoId = k.get(i).toString();
HashMap m = v.get(i);
demoData.fieldNames.addAll(m.keySet());
demoData.values.addAll(m.values());
}

理想情况下,您应该从我的代码中删除第 1 行和第 2 行,并将其移至 DemoData 类的构造函数。

关于java - Android,使用给定的类从映射获取值到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55591478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com