Однако, как я понимаю, он должен работать нормально, поскольку я вычисляю значение K, которое уже присутствует в Map
blockquote>Экземпляр
Map
, созданный с помощьюsingletonMap()
не позволяет действительно добавлять или удалять запись на карте. Но неизменность идет дальше. Это означает, что все состояние объекта не может быть изменено. Таким образом, он не позволяет обновлять существующую запись (даже с тем же значением, что и в вашем примере), как вы пытались:Collections.singletonMap("k", "v").computeIfAbsent("k", k -> "v" );
На самом деле единственными поддерживаемыми методами экземпляром
SingletonMap
являются методы поиска:get()
,entrySet()
и т. д. ... и любые поддерживаемые методы, возвращающие записи в Map, возвращают защитную копию из них, как это должен делать любой неизменный класс.Кроме того, обратите внимание, что все
public static singletonXXX()
методы вjava.util.Collections
(singleton()
,singletonList()
иsingletonMap()
) возвращают неизменяемые экземпляры.