Как вернуть неизменяемое представление коллекции Java Trove? - PullRequest
3 голосов
/ 27 января 2010

Я бы хотел поместить немодифицируемые обертки вокруг некоторых коллекций Trove: я проверил документацию Trove и не могу найти простой способ сделать это (возможно, я упустил что-то очевидное).

Так что теперь каждый раз, когда мне нужна такая немодифицируемая оболочка, я расширяю коллекцию Trove (например, TIntLongHashMap ) и делегирую все вызовы только для чтения в завернутую тему Trove и добавляю UnsupportedOperationException в каждом методе, который пытается изменить коллекцию.

Есть ли более простой способ?

Примечание: этот вопрос не относится к коллекциям Java по умолчанию, и в этом случае меня совсем не интересуют ни коллекции Java по умолчанию, ни другие коллекции Java: этот вопрос конкретно касается Trove.

Ответы [ 2 ]

3 голосов
/ 27 августа 2013

В то время принятый ответ был правильным, но для тех, кто хочет сделать то же самое, Trove 3 теперь поддерживает это через класс TCollections.

Е.Г.

TIntLongMap myMap = new TIntLongHashMap();
TIntLongMap myUnmodifiableMap = TCollections.unmodifiableMap(myMap);

myUnmodifiableMap.put(1, 2L); // throws UnsupportedOperationException
1 голос
/ 27 января 2010

Нет способа сделать это с Trove API, только с декораторами.

...