К примеру мне нужно проверить, существует ли какие-либо данные в 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. Если да, то второй код будет постоянно лазить за ними в базу, а первый отработает верно.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости