我正在閱讀Enthuware考試模擬器的一些示例問題。我遇到了一個問題,其 的問題是這樣的這個特定的集合如何適用於特定場景?
您正在設計一個緩存對象的類。當提供對象 標識符時,它應該能夠 存儲和檢索對象。此外,這個類應該通過追蹤對象的「最後訪問時間」來工作。因此,如果其容量已滿,則它應該只刪除最長未訪問的對象。
您將使用哪個集合類來存儲對象?
給出可能的選項是
- HashSet的
- 的ArrayList
- LinkedHashMap的
- LinkedList的
- TreeMap的
通過模擬給出的正確答案我s的LinkedHashMap。我會引用模擬器給出的解釋 。
LinkedHashMap類按其 插入時間的順序維護元素。這個屬性可以用來構建所需的緩存 如下:
插入鍵值對你做正常,其中關鍵將是對象標識符和值將是對象被緩存。
當請求鍵時,將其從LinkedHashMap中移除,然後再次插入它。這將確保這一對標記爲插入最新的 。
如果容量已滿,請刪除第一個元素。
請注意,你不能簡單地重新插入鍵值(無第一 移除),因爲重新插入操作不會影響到對的 位置。
我的確瞭解了第一點。還有以下問題。
- 在第一點它說,值將被緩存的對象?緩存是如何應用的?
- 我無法從第二點開始理解。
有人可以向我解釋這個概念嗎?謝謝。
我正要寫一個答案,然後意識到自己變得困惑。很好的解釋。 – victorantunes
@Jeroen,完美的答案。非常感謝你幫助我以一個例子來解釋這個概念。我非常感謝。完美的解釋。 – benz