В настоящее время я использую Firestore и у меня есть следующие данные в документе:
Вот структура документа.
Во-первых, я хотел бы получить эти 3 значения ie., Phonenumb, chapter1 и его значения. Во-вторых, я sh суммирую значения главы 1 и сохраняю их для каждого номера телефона. Позже это будет использоваться для целей графика
Мне удалось получить их во внешний и внутренний HashMaps со следующим кодом:
CollectionReference chemistry = db.collection("RESULTS").document("Summary").collection("ChemistryVII");
chemistry
.whereEqualTo("school", "Test School")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (DocumentSnapshot document : task.getResult()) {
Map<String, Object> map = document.getData();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().contains("chapter")) {
if (outer.isEmpty() || !outer.containsKey(map.get("phonenumb"))) {
Map<String, Object> inner = new HashMap<>();
inner.put(entry.getKey(), entry.getValue());
String phonenumb = map.get("phonenumb").toString();
outer.put(phonenumb, inner);
} else {
Map<String, Object> inner = new HashMap<>();
inner.put(entry.getKey(), entry.getValue());
String phonenumb = map.get("phonenumb").toString();
outer.put(phonenumb, inner);
}
doSumm();
Toast("Document " + outer.values());
}
}
}
}
});
I Теперь wi sh для суммирования значений внутреннего HashMap с помощью doSumm (), но я сталкиваюсь с проблемами.
Моя попытка doSumm заключается в следующем.
private void doSumm() {
int counter = outer.size();
List<Long> chaptersum = new ArrayList<>();
Toast("Outer Size "+ outer);
// Map<String, Map<String, Object>> chapterwise = new HashMap<>();
//Toast("Map Values " + ((Map) outer.get("5100351003")));
for (Map.Entry<String, Map<String, Object>> entry : outer.entrySet()) {
Map<String, Object> inner = entry.getValue();
int count = inner.size();
long summ = inner.values().stream().mapToLong(Long::longValue).sum();
}
}
Я получаю следующая ошибка в Long :: longValue: «На метод non-stati c нельзя ссылаться из stati c content»
Кроме того, я не уверен, является ли это оптимальным способом суммирования значений внутри вложенный hashmap.
Мне нужны независимые значения в следующем упражнении, которые будут отображать их отдельно на другом графике.
Заранее спасибо за помощь.