は、私は&がCache
Guava:Cache.asMap()。remove()が優れていますか?
final Cache<String, PendingRequest> pendingRequest = CacheBuilder.newBuilder().build();
// get first
pendingCall = pendingRequest.getIfPresent(key);
pendingRequest.invalidate(key); // then remove.
から項目を削除取得したい私はまた
pendingCall = pendingRequest.asMap().remove(key);
別の方法を発見したasMap
方法は、すべてのアイテムのクローンを作成していますか?それは重い呼びですか?パフォーマンスを考えている方が良い方法はどれですか。
より慣用的ですが、削除された値が必要な状況ではビューが便利です。この操作はアトミックですが、2つの操作を実行する彼の選択肢はレイシーです。キャッシュインタフェースは慣用的でシンプルな抽象化を提供し、ビューはより高度なニーズに対応するエスケープハッチを提供します。 –
@BenManesあなたが正しいです、私はそのOPを削除値を使用する必要があるキャッチしていない。 – Xaerxess