Enthuware 試験シミュレーターからいくつかのサンプル問題を読んでいました。問題文がこのような質問に出くわしました
オブジェクトをキャッシュするクラスを設計しています。オブジェクト識別子が提供されると、オブジェクトを格納および取得できる必要があります。さらに、このクラスは、オブジェクトの「最終アクセス時刻」を追跡することによって機能する必要があります。したがって、その容量がいっぱいの場合、最も長くアクセスされていないオブジェクトのみを削除する必要があります。
オブジェクトを格納するためにどのコレクション クラスを使用しますか?
与えられた可能なオプションは
- ハッシュセット
- 配列リスト
- LinkedHashMap
- リンクされたリスト
- ツリーマップ
シミュレーターの正解は LinkedHashMap です。シミュレーターによる説明を引用します。
LinkedHashMap クラスは、要素を挿入時間順に維持します。このプロパティを使用して、次のように必要なキャッシュを構築できます。
通常どおりにキーと値のペアを挿入します。ここで、key はオブジェクト識別子、value はキャッシュされるオブジェクトです。
キーが要求されたら、それを LinkedHashMap から削除してから、再度挿入します。これにより、このペアが最後に挿入されたものとしてマークされます。
容量がいっぱいの場合は、最初の要素を削除します。
再挿入操作はペアの位置に影響を与えないため、キー値を (最初に削除せずに) 単純に再度挿入することはできないことに注意してください。
私は最初の点だけを理解しています。それでも、次の質問があります。
- ポイント1では、値はキャッシュされるオブジェクトになりますか? キャッシングはこのようにどのように適用されますか?
- ポイント2以降は理解できません。
誰かが私にこの概念を説明できますか? ありがとう。