2016-03-31 13 views
1

私はMapに、私がすばやく簡単にアクセスしたい値が含まれています。 get(key)を使用すると、Mapが大きくなるため高価になる可能性があります。私はそれが必要なたびにget(key)にしたくないです。しかし、私はマップの変更に合わせて更新したいと思っています。ライブマップの値を参照する方法

private int i = get("i"); // This will not be aware of later changes to the Map 

private int i() { 
    return get(""); // This is potentially slow 
} 

private Entry<String,Integer> i; // This skips the key-matching part, and is aware of value changes, but unaware of removal 

私は上記3つのオプションのどれも理想的ではないと思います。私は何をすべきか?

+0

他にどのように価値を得ることを計画していますか?自分自身で 'Map'を繰り返しますか? – robotlos

+4

"Mapを大きくするとget(key)を使うのは高価になります。"ハッシュマップの場合、ハッシュマップのポイントは、多数の衝突を避けて、それはまだ〜O(1)のアクセスです。あなたがハッシュベースのマップを使用していない*場合は、何か理由がありますか? –

答えて

0

this answerのように、PropertyChangeListenerを実装するMapを使用できます。マップにnullの値を格納できない場合は、プロパティの変更をnullに変更すると、削除が通知されます。または、独自のMapChangeRemoveListenerインターフェイスを実装することもできます。

いずれにしても、登録された利害関係者に変更が通知されます。マップ値への「ライブ」参照は返されませんが、少なくとも地図をポーリングして変更された値を探し続ける必要はありません。

関連する問題