class Test3 { public static void main(String args[]){ Map<Integer, String> aa = new HashMap(); System.out.println(aa.put(1, "test")); } }
всякий раз, когда я выполняю этот оператор, он печатает нулевое значение. Я хочу знать, почему он печатает нулевое значение. Что происходит?
Из Javadoc Map.put:
Map.put
V put(K key, V value) ... Возвращает : предыдущее связанное значениес ключом, или ноль, если не было сопоставления для ключа.
V put(K key, V value)
...
Возвращает : предыдущее связанное значениес ключом, или ноль, если не было сопоставления для ключа.
Карта является пустой до вызова put, поэтому "не было сопоставления для ключа", поэтому возвращается null.
put
null
реализация put выглядит примерно так:
@Override public V put(K key, V value) { return putImpl(key, value); }
Если карта ранее содержала отображение для ключа, старое значение заменяется. иначе null вернется, потому что нет сопоставления.