Как сохранить несколько пар ключ-значение в Java Map, так как «put ()» перезаписывает предыдущие данные - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу создать HashMap для хранения данных в базе данных firestore. Я хочу сохранить имя и логическое значение в зависимости от нажатой кнопки. Но "put ()" в hashmap заменяет предыдущие значения, то есть имя и логическое значение. И я получаю только последнее значение в базе данных.

Вот использование пут для хранения данных на карте.

   @Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.present:
            attendance.put(name, true);
            nextCard();
            break;

        case R.id.absent:
            attendance.put(name, false);
            nextCard();
            break;
    }
}

И метод хранилища в пожарном магазине ..

public void storeAttendance(String batch) {
    String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());

    db.collection(batch+"sheet").document(date)
            .set(attendance)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Log.d("TAG", "DocumentSnapshot successfully written!");
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.w("TAG", "Error writing document", e);
                }
            });
}

Я хочу получить значения для всех учащихся в базе данных, но я получаю только одно значение для последнего студента.

Структура базы данных, которую я получаю.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

HashMap не позволяет дублировать ключи; Переменная name в вашем вызове .put () должна быть уникальной для каждого значения, которое вы sh добавляете на карту. В противном случае оно будет перезаписано.

 attendance.put(name, true); //Here the name (key) value needs to be unique for every bool.
0 голосов
/ 02 апреля 2020

Задумывались ли вы об использовании какой-либо коллекции?

Процесс может выглядеть следующим образом:

Ведение списка / набора пользователей / данных о посещаемости. Каждый раз, когда нажимается текущая или отсутствующая кнопка, добавляйте данные этого пользователя в список.

Как только Учитель / Докладчик / Координатор Мероприятий готов, они нажимают кнопку «Сохранить посещаемость», и в этот момент вы сохраняете Список / Набор как один объект в HashMap.

Другой вариант - сохранить каждого пользователя на карте на основе его идентификатора. Все зависит от того, как вы планируете использовать данные.

Карта может быть id-> история посещений, date-> список идентификаторов, присутствующих на данную дату, и т. Д. c. Есть много вариантов, и это действительно зависит от вашего использования данных.

Если вы не хотите перезаписывать данные в HashMap, используйте другой ключ для карты. Если вы не можете использовать другой ключ, поместите все значения в один объект Collection и используйте эту коллекцию в качестве значения на карте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...