Как получить неизменяемый LinkedHashSet

1

Существуют Collections.unmodifiableCollection() и Collections.unmodifiableSet() но нет Collections.unmodifiableLinkedHashSet()

Каков правильный выбор для сохранения заказа?

  • 4
    Не изменяемый это обертка. Просто оберните LinkedHashSet .
  • 0
    Но каким методом? Я предполагаю, что если они нашли время, чтобы разместить все это Collections.unmodifiableX (коллекция), потому что это имеет последствия позади
Показать ещё 1 комментарий
Теги:
java-8
collections

1 ответ

9
Лучший ответ

Set возвращенный Collections.unmodifiableSet(Set) является только оболочкой Set вы предоставляете в качестве аргумента.

Возвращает неизменяемый вид указанного набора. Этот метод позволяет модулям предоставлять пользователям доступ только для чтения к внутренним наборам. Операции запроса в возвращаемом наборе "чтение" заданного набора и попытки изменить возвращаемый набор, будь то прямой или через его итератор, приводят к UnsupportedOperationException.

Другими словами, все действия чтения ведут себя точно так же, как если бы вы напрямую обращались к вашему целевому Set. Все действия записи терпят неудачу.

Поэтому просто используйте его со своим LinkedHashSet.

LinkedHashSet<?> someSet = ...
Set<?> wrapper = Collections.unmodifiableSet(someSet);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню