Хорошей функцией, которая не используется часто, является блок try-catch всей функции:
int Function()
try
{
// do something here
return 42;
}
catch(...)
{
return -1;
}
Основное использование должно было бы перевести исключение в другой класс исключений и перебросок, или переводить между исключениями и основанной на возврате обработкой кода ошибки.
На ваш вопрос, была ли карта похожа на ведро: нет.
Это похоже на список с парами имя = значение
, тогда как имя
не 'не обязательно должно быть String (хотя может).
Чтобы получить элемент, вы передаете свой ключ методу get (), который возвращает вам назначенный объект взамен.
И Карта Hash означает, что если вы пытаетесь получить свой объект с помощью метода get, он не будет сравнивать реальный объект с тем, который вы предоставили, потому что ему потребуется выполнить итерацию по его списку и compare () ключ, который вы предоставили с текущим элементом.
Это было бы неэффективно. Вместо этого, независимо от того, из чего состоит ваш объект, он вычисляет так называемый хэш-код из обоих объектов и сравнивает их. Это' Намного проще сравнивать два int
s вместо двух целых (возможно, очень сложных) объектов. Вы можете представить хэш-код как сводку, имеющую предопределенную длину (int), поэтому он не уникален и имеет коллизии. Вы найдете правила для хэш-кода в документации, на которую я вставил ссылку.
Если вы хотите узнать больше об этом, вы можете взглянуть на статьи на javapractices.com и technofundo.com
с уважением
По определению, команда put
заменяет предыдущее значение, связанное с данным ключом на карте (концептуально как операция индексирования массива для примитивных типов).
map просто отбрасывает ссылку на значение. Если ничто другое не содержит ссылку на объект, этот объект становится пригодным для сборки мусора. Кроме того, Java возвращает любое предыдущее значение, связанное с данным ключом (или null
, если его нет), поэтому вы можете определить, что там было, и при необходимости сохранить ссылку.
Дополнительная информация здесь: HashMap Doc
Вы можете найти свой ответ в javadoc Map # put (K, V) (который фактически что-то возвращает):
public V put (K key, Значение V)
Связывает указанное значение с указанным ключом на этой карте. (дополнительная операция). Если карта ранее содержал отображение для этот ключ, старое значение заменяется на указанное значение. (На карте
м
говорится содержать отображение для ключаk
, если и только еслиm.containsKey (k)
будет returntrue
.)Параметры:
key
- ключ, с которым должно быть связано указанное значение.
value
- значение, которое будет связано с указанным ключом .Возвращает:
предыдущее значение, связанное с указанным ключом, илиноль
, если не было отображение дляключа
. (Возвратnull
также может указывать на то, что карта ранее связалаnull
с указанным ключом, если реализация поддерживает значения
null
.)
Таким образом, если вы не присваиваете возвращаемое значение при вызове mymap.put («1», «строка»)
, оно становится не имеющим ссылки и, таким образом, подлежит сборке мусора.