Я новичок в HashMap в java. Я пытаюсь создать ситуацию, когда происходит столкновение и для одного ключа (в этом случае 1). Я читал, что значения в HashMap не написаны, вместо этого они поддерживаются в списке ссылок. Как отобразить все значения ключа "1"?
public static void main(String[] args)
{
HashMap<String, String> hash = new HashMap<String, String>();
hash.put("1", "one");
hash.put("1", "two");
hash.put("1", "three");
hash.put("1", "four");
System.out.println(hash);
}
Вывод вышеуказанного кода -
{1=two}
Это неправда. На карте сохраняется только одна пара ключей, значение для каждого уникального ключа. Самое последнее значение, которое вы положили на карту для определенного ключа, переопределит предыдущее значение, которое было сохранено для этого ключа.
Различные ключи могут иметь один и тот же хэш-код, который заставляет их храниться в том же связанном списке внутри HashMap, но ключи на карте уникальны. Для каждого из двух ключей в карте key1.equals(key2)
возвращает false, даже если key1.hashCode()==key2.hashCode()
.
Первые две строки Map javadoc объясняют все это.
public interface Map<K,V>
Объект, который сопоставляет ключи значениям. Карта не может содержать дубликаты ключей; каждый ключ может отображать не более одного значения.
Javadoc for Map можно найти здесь - http://docs.oracle.com/javase/7/docs/api/java/util/Map.html