2016-05-04 9 views
0

Мне нужно предоставить метод getter для значений HashMap, однако я не могу разрешить внесенные изменения в возвращаемую коллекцию или ее элементы, которые затем будут отражены в исходном HashMap. Я получение значения, установленного из. Сейчас я делаю это так:Возвращение копий или клонов коллекций для предотвращения изменчивости

public Collection<T> getCollection() { 
    Collection<T> collection = map.values(); 
    return collection; 
} 

Будет ли это адекватно добиться того, что я решил сделать, или изменения в возвращаемых коллекции все еще отражают в моей HashMap? Причина, по которой я спрашиваю, состоит в том, что я знаю, что какие-либо изменения в коллекции возвратили мой метод .values ​​() Map в исходной карте. Благодаря!

+0

«изменится на возвращенную коллекцию, которая по-прежнему отражает мою HashMap?» - Ты попробовал это посмотреть? – khelwood

+0

Я бы, но, к сожалению, у меня нет доступа к моей машине, и я просто пишу код в текстовом редакторе. – transiti0nary

+0

Stack Overflow не заменит ваш код. – khelwood

ответ

2

Если вы хотите вид значений вы можете использовать Collections.unmodifiableCollection

public Collection<T> getCollection() { 
Collection<T> view = Collections.unmodifiableCollection(map.values()); 
return view; 
} 

Это даст вам view, то есть: клиенты не могут мутировать, но мутации видны им.

+1

Спасибо, это имеет смысл :) – transiti0nary

 Смежные вопросы

  • Нет связанных вопросов^_^