Существуют Collections.unmodifiableCollection()
и Collections.unmodifiableSet()
но нет Collections.unmodifiableLinkedHashSet()
Каков правильный выбор для сохранения заказа?
Set
возвращенный Collections.unmodifiableSet(Set)
является только оболочкой Set
вы предоставляете в качестве аргумента.
Возвращает неизменяемый вид указанного набора. Этот метод позволяет модулям предоставлять пользователям доступ только для чтения к внутренним наборам. Операции запроса в возвращаемом наборе "чтение" заданного набора и попытки изменить возвращаемый набор, будь то прямой или через его итератор, приводят к
UnsupportedOperationException
.
Другими словами, все действия чтения ведут себя точно так же, как если бы вы напрямую обращались к вашему целевому Set
. Все действия записи терпят неудачу.
Поэтому просто используйте его со своим LinkedHashSet
.
LinkedHashSet<?> someSet = ...
Set<?> wrapper = Collections.unmodifiableSet(someSet);
LinkedHashSet
.