Collections.unmodifiablemap () и коллекции, где чтения также изменяются - PullRequest
4 голосов
/ 10 июня 2011

Это скорее вопрос любопытства, чем что-либо еще. Скажем, я предоставляю LinkedHashMap с порядком доступа, установленным в true, для Collections.unmodifiableMap (). Поскольку чтение на самом деле модифицирует карту. Означает ли это, что существуют случаи, когда представление, возвращаемое unmodifiableMap (), действительно модифицируемо?

public class MyApp {

   /**
   * @param args
   */    
   public static void main(String[] args)    {
     Map<String, String> m = new LinkedHashMap<String,
      String>(16,.75f,true);
      Collections.unmodifiableMap(m);    

    }

}

Ответы [ 2 ]

5 голосов
/ 10 июня 2011

Карта модифицируется сама. Collections.unmodifiableMap() предоставляет только декоратор для Карты, который запрещает изменения, но не делает саму Карту неизменной.

3 голосов
/ 10 июня 2011

Collections.unmodifiableMap возвращает новую карту, которая выдает исключения при попытке ее изменить, используя существующую карту, которую вы передали в качестве резервной коллекции. Это не меняет семантику существующей карты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...