Collections.unmodifiableMap
возвращает вид на исходную карту, а не копию.
java.util.Collections.unmodifiableMap
не является устаревшим.
Что касается одновременного доступа к карте, у вас нет проблем, если вы используете ссылку, возвращаемую этим методом. Но будьте осторожны: возвращенная ссылка - это вид на исходную карту. Поэтому, если исходная карта изменяется, пока вы используете неизменяемое представление, у вас будут проблемы с параллелизмом.
Map.copyOf
Вместо этого я предлагаю в Java 10 и более поздних версиях вместо этого позвонить Map.copyOf
. Этот метод создает фактическую копию карты, а не вид. Так что результат не имеет отношения к оригиналу. Добавление или удаление записей в исходной карте не влияет на неизменяемую карту, возвращаемую этим методом.
Map< DayOfWeek , Person > map = new HashMap<>() ;
…
Map< DayOfWeek , Person > mapUnmod = Map.copyOf( fix