Ответ
Да, может. В HashMap каждый бакет (bucket) хранит элементы в виде связного списка (или дерева, если элементов много). При коллизии хэш-кодов новые элементы добавляются в этот список.
Пример:
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1); // Попадает в бакет 1
map.put("b", 2); // Коллизия? Зависит от хэш-кода
map.put("a", 3); // Заменяет старое значение
При hashCode() коллизии элементы хранятся в одном бакете как Node<K,V> (или TreeNode<K,V> при большом количестве). Java 8+ использует дерево для длинных списков (>8 элементов) для оптимизации поиска.