Я не могу найти сумму array
в поле документа Firestore.
Независимо от того, что я делаю, я продолжаю получать следующую ошибку:
java .lang.ClassCastException: java .lang.Long не может быть приведен к java .lang.Integer
Мое требование следующее:
У меня есть коллекция БД -> "ALLUSERS", и каждый идентификатор документа является номером телефона пользователя.
Под этим документом у меня есть Коллекции "ХИМИЯ" и документ "Сводка". В этом у меня есть числовой массив глав с точками.
введите описание изображения здесь
Я могу получить эту деталь с помощью DocuementSnapshot.get (... глава...). Однако, как только я пытаюсь суммировать значения внутри массива, я получаю вышеупомянутую ошибку.
Ниже приведен код, в котором я пытался суммировать то же самое с потоком.
for (DocumentSnapshot document : task.getResult()) {
String phonenumber = document.getString("phonenumb");
students.add(phonenumber);
chemistry.document(phonenumber)
.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
Map<String, Object> map = task.getResult().getData();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().contains("chemchaps")) {
List<String> stringList = (List<String>) entry.getValue();
List<Integer> integerList = stringList.stream()
.map(Integer::valueOf).collect(Collectors.toList());
Integer maxValue = Collections.max(integerList);
Toast("Max Value " + integerList + " " + maxValue);
for(int i = 0; i < maxValue; i++){
String chapterNo = "Chapter"+String.valueOf(maxValue);
String chapternumb = "chapter"+String.valueOf(maxValue);
chemistry.document(phonenumber).collection("CHEMISTRY").document("Summary")
.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
DocumentSnapshot documentSnapshot = task.getResult();
List<Integer> chaptersum = (List<Integer>) documentSnapshot.get(chapternumb);
long intsum = chaptersum.stream().mapToLong(Integer::longValue).sum();
//chaptersum.stream().reduce(0, (a, b)-> a+b);
//chaptersum.values().stream().mapToInt(Integer::intValue).sum();
Toast("Chapter Nos "+chapterNo + " "+ chaptersum+ " "+ intsum);
}
}
});
}
}
}
Toast("Map data " + map);
}
});
Я получаю ошибка в этой строке:
long intsum = chaptersum.stream().mapToLong(Integer::longValue).sum();
Спасибо за помощь