У меня есть статический массив дат - String[] dates = new String[MAX_DAYS]
.
Каждая дата имеет формат yyyyMMdd
, а массив отсортирован по алфавиту
(например, dates[0] = "20200102"
, dates[1] = "20200101"
, dates[2] = "20191231"
, dates[3] = "20191230"
и т. Д.)
У меня также есть база данных (я использую базу данных Firebase), в которой хранятся даты (в указанном формате), например:
{
"key" : {
"aaa" : "20191230",
"bbb" : "20191231",
"ccc" : "20191231",
"ddd" : "20191231",
"eee" : "20200101",
"fff" : "20200101",
"ggg" : "20200103"
}
}
Я хочу проверить для каждого значения в массиве dates
(минус первый индекс), появляется ли это значение хотя бы один раз в базе данных. (т. е. если все значения, но во-первых, dates
существуют в базе данных, что-то делают, в противном случае делают что-то другое)
Я создал запрос, который выбирает только дочерние элементы в key
, значение которых находится в диапазоне dates[1]
и dates[dates.length - 1]
:
// reference to "key" node
ref.orderByValue().startAt(dates[dates.length - 1]).endAt(dates[1])
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
Какой самый эффективный способ выяснить, существуют ли все значения dates
в базе данных? Я просто сохраняю значение каждого дочернего элемента в другом массиве и затем зацикливаю оба массива? Или есть лучший способ?