Добавление записей в LinkedList внутри ConcurrentHashMap не работает

1

У меня есть ConcurrentHashMap, который содержит строку как ключ и LinkedList как значение. Размер списка не должен быть больше 5. Я пытаюсь добавить некоторые элементы в список, но когда я распечатываю карту, я вижу только последний добавленный элемент. Вот мой код:

private ConcurrentHashMap<String, LinkedList<Date>> userDisconnectLogs = new ConcurrentHashMap<String, LinkedList<Date>>();

public void addNewDateEntry(String userId, LinkedList<Date> timeStamps) {
    if (timeStamps.size() >= 5) {
        timeStamps.poll();
        timeStamps.add(new Date());
        userDisconnectLogs.put(userId, timeStamps);
    } else {
        timeStamps.add(new Date());
        userDisconnectLogs.put(userId, timeStamps);
    }

    for (Entry<String, LinkedList<Date>> entry : userDisconnectLogs
            .entrySet()) {
        String key = entry.getKey().toString();
        ;
        LinkedList<Date> value = entry.getValue();
        System.out.println("key: " + key + " value: " + value.size());
    }
}

Спасибо!

  • 0
    Ваш ключ все время один и тот же.
  • 0
    Показать код, где вы вызываете addNewDateEntry() ?
Показать ещё 2 комментария
Теги:
dictionary
linked-list

1 ответ

0

Здесь для hashMap ключ должен быть уникальным. И из этого кода кажется, что ключ всегда такой же, поэтому все время он будет переопределять данные.

  • 0
    Да, это будет то же самое, но я хочу, чтобы значение LinkedList, соответствующего этому ключу, увеличилось.
  • 0
    Поскольку ключ hashmap должен быть уникальным, с первым ограничением, вы можете либо увеличить свой идентификатор пользователя на число и сделать его уникальным, либо выбрать другой уникальный ключ.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню