К примеру мне нужно проверить, существует ли какие-либо данные в map
, если существуют, то вернуть иначе загрузить из базы данных.
Map<String, Data> map = Maps.newHashMap();
//Вариант 1
map.containsKey(key) ? map.get(key) : map.put(key, loadFormDatabase(key));
//Вариант 2
Data data = map.get(key);
if (data == null) {
data = map.put(key, loadFormDatabase(key));
}
return data;
Т.е. вопрос в том, что будет быстрей: предварительная проверка на существование ключа в map
, прежде чем делать get
или же сразу get
и проверка на != null
Быстрее, короче и нагляднее будет map.computeIfAbsent(key, SomeClass::loadFromDatabase)
Очевидно, что второе быстрее, поскольку оно содержит на одно действие (вызов containsKey
) меньше. С другой стороны, стоит обратить внимание на то, могут ли в словаре находиться значения null
. Если да, то второй код будет постоянно лазить за ними в базу, а первый отработает верно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возникает ошибка при создании: (9:9)illegal start of expression
Хочу сгенерировать джава-классы по WSDL-описанию SOAP-сервисаЭто WSDL-описание дается в руководстве программиста и недоступно по ссылке ?wsdl