computeIfAbsent
принимает два параметра:
key
- ключ, с которым должно быть связано указанное значение mappingFunction
- функция для вычисления значения (это тип Function , функциональный интерфейс, который принимает один аргумент и возвращает результат).
Нет другого способа указать параметры для метода computeIfAbsent
.Вот пример использования этого метода Map
:
Вход: Map<String, Integer> map: {four=4, one=1, two=2, three=3, five=5}
map.computeIfAbsent("ten", k -> new Integer(10)); // adds the new record to the map
map.computeIfAbsent("twelve", k -> null); // record is not added, the function returns a null
map.computeIfAbsent("one", k -> new Integer(999999)); // record is not updated, the key "one" already exists -
// and has a non-null value
map.put("eleven", null); // new record with null value
map.computeIfAbsent("eleven", k -> new Integer(11)); // updates the record with new value
Выход: {four=4, one=1, eleven=11, ten=10, two=2, three=3, five=5}
Рассмотримкод : map.computeIfAbsent("ten", k -> new Integer(10));
Код говорит, что я хочу вставить новое отображение (пара ключ-значение) в map
.В методе computeIfAbsent
необходимо указать ключ , который равен «десять».Значение является производным от Function
, который принимает ключ в качестве входного параметра и выдает результат;результат устанавливается как значение для сопоставления.
В этом примере пара ключ-значение добавляется на карту: «десять», 10.
Лямбда-выражение k -> new Integer(10)
равноэкземпляр функционального интерфейса Function<String, Integer>
.Код также может быть представлен как:
Function<String, Integer> fn = k -> new Integer(10);
map.computeIfAbsent("ten", fn);