2016-05-04 11 views
0

HashMapの値にゲッターメソッドを提供する必要がありますが、返されたCollectionまたはその要素が元のHashMapに反映されるようにすることはできませんから値を取得する。私は現在、そうのようにそれをやっている:変更を防ぐためにコレクションのコピーまたはクローンを返す

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

これは十分に私がやろうと設定したもの達成する、または返されたコレクションへの変更はまだ私のHashMapに反映されますか?私が尋ねる理由は、コレクションの変更がMapの.values()メソッドを元のMapに反映したことを知っているからです。ありがとう!

+0

"返されたコレクションは私のHashMapに反映されますか?" - 見てみましたか? – khelwood

+0

残念ながら、私は自分のマシンにアクセスできず、テキストエディタでコードを書くだけです。 – transiti0nary

+0

あなたのコードを実行する代わりにスタックオーバーフローを使用することはできません。 – khelwood

答えて

2

あなたがCollections.unmodifiableCollection

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

を使用することができます値の表示をしたい場合、これはすなわち、あなたにviewを与えるだろう:クライアントはそれを変異させることはできませんが、変異は、それらに表示されます。

+1

ありがとう、これは意味があります:) – transiti0nary