Я считаю, что суть в том, что даже если коллекция не изменяема, это не гарантирует, что она не может измениться.Возьмите, например, коллекцию, которая выселяет элементы, если они слишком стары.Unmodifiable просто означает, что объект, содержащий ссылку, не может ее изменить, а не то, что он не может измениться.Настоящим примером этого является Collections.unmodifiableList
метод.Возвращает неизменяемое представление списка.Ссылка List, которая была передана в этот метод, все еще может быть изменена, поэтому список может быть изменен любым держателем переданной ссылки.Это может привести к ConcurrentModificationExceptions и другим плохим вещам.
Неизменяемые, означают, что коллекция никоим образом не может быть изменена.
Второй вопрос: Неизменяемая коллекция не означает, что объекты, содержащиеся вколлекция не изменится, просто эта коллекция не изменится по количеству и составу объектов, которые она содержит.Другими словами, список ссылок коллекции не изменится.Это не означает, что внутренности объекта, на который ссылаются, не могут измениться.