Метод getOrDefault
Метод getOrDefault класса Map возвращает
значение, связанное с указанным ключом. Если ключ
отсутствует в отображении, метод возвращает значение
по умолчанию, переданное вторым параметром. В первый
параметр мы передаем ключ, значение которого нужно
получить, а во второй - значение по умолчанию, которое
будет возвращено, если такого ключа нет в отображении.
Исходное отображение при этом не изменяется.
Синтаксис
map.getOrDefault(key, defaultValue)
Пример
Давайте создадим отображение и получим из него
значение по существующему ключу 1:
import java.util.Map;
import java.util.HashMap;
public class Main
{
public static void main(String[] args)
{
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
String res = map.getOrDefault(1, "unknown");
System.out.println(res);
}
}
Результат выполнения кода:
"a"
Пример
А теперь попробуем получить значение по ключу 5,
которого нет в отображении:
import java.util.Map;
import java.util.HashMap;
public class Main
{
public static void main(String[] args)
{
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
String res = map.getOrDefault(5, "unknown");
System.out.println(res);
}
}
Результат выполнения кода:
"unknown"
Пример
Метод getOrDefault удобно использовать для
подсчета количества повторений элементов. Давайте
посчитаем, сколько раз встречается каждое число в списке:
import java.util.Map;
import java.util.HashMap;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 1, 3, 1, 2);
Map<Integer, Integer> counts = new HashMap<>();
for (Integer num : list)
{
int count = counts.getOrDefault(num, 0);
counts.put(num, count + 1);
}
System.out.println(counts);
}
}
Результат выполнения кода:
{1=3, 2=2, 3=1}
Смотрите также
-
метод
get,
который возвращает значение по ключу -
метод
put,
который добавляет пару ключ-значение -
метод
containsKey,
который проверяет наличие ключа -
метод
putIfAbsent,
который добавляет значение, если ключ отсутствует