新聞中心
LruBuffer

java.lang.Object
|---ohos.utils.LruBuffer
public class LruBuffer
extends Object 一種緩存類,當容量不足以存儲新值時,使用最近最少使用 (LRU) 算法刪除最近最少訪問的值。
您可以指定緩沖區(qū)的容量。當緩沖區(qū)中的鍵值對數(shù)量超過其預設(shè)容量時,LRU算法生效。具體來說,最近最少訪問的鍵值對將被刪除,以便為新的鍵值對騰出空間。您還可以重置緩沖區(qū)容量。如果新設(shè)置的緩沖區(qū)容量小于已存儲的鍵值對的數(shù)量,則觸發(fā)LRU算法刪除最近最少訪問的鍵值對。以下方法具有訪問令牌:put(java.lang.Object,java.lang.Object), get(java.lang.Object), contains(java.lang.Object)。如果其中一個已被成功調(diào)用并且已經(jīng)對一個值執(zhí)行了實際操作,該值將被標記為最近訪問的值,因此它在緩沖區(qū)滿時的自動清除將被推遲。
該類的大部分方法都支持同步機制,因此可以在多線程或并發(fā)場景中使用。該類還提供了getMatchCount()、getMissCount()和getPutCount()方法,用于獲取存儲的key-value對的訪問統(tǒng)計信息,包括匹配的查詢key-value對的總數(shù)、不匹配的查詢key-value對的總數(shù)、并添加了鍵值對。
另外,您可以重寫該類中的afterRemoval(boolean,java.lang.Object,java.lang.Object,java.lang.Object)方法,在存儲的鍵值對被刪除或自動清除后進行后續(xù)操作。注意:緩沖區(qū)容量不能設(shè)置為0,key或value不能為null。
構(gòu)造函數(shù)摘要
| 構(gòu)造函數(shù) | 描述 |
|---|---|
| LruBuffer() | 默認構(gòu)造函數(shù)用于創(chuàng)建一個新的 LruBuffer 實例,默認容量為 64。 |
| LruBuffer(int capacity) | 用于創(chuàng)建新 LruBuffer 實例的構(gòu)造函數(shù)。 |
方法總結(jié)
| 修飾符和類型 | 方法 | 描述 |
|---|---|---|
| protected void | afterRemoval(boolean isEvict, K key, V value, V newValue) | 刪除值后執(zhí)行后續(xù)操作。 |
| int | capacity() | 獲取當前緩沖區(qū)的容量。 |
| void | clear() | 從當前緩沖區(qū)中清除鍵值對。 |
| boolean | contains(K key) | 檢查當前緩沖區(qū)是否包含指定的鍵。 |
| protected V | createDefault(K key) | 如果未命中,則執(zhí)行后續(xù)操作以計算特定鍵的值。 |
| V | get(K key) | 獲取與指定鍵關(guān)聯(lián)的值。 |
| int | getCreateCount() | 獲取 createDefault(java.lang.Object) 返回值的次數(shù)。 |
| int | getMatchCount() | 獲取查詢值匹配成功的次數(shù)。 |
| int | getMissCount() | 獲取查詢值不匹配的次數(shù)。 |
| int | getPutCount() | 獲取將值添加到緩沖區(qū)的次數(shù)。 |
| int | getRemovalCount() | 獲取從緩沖區(qū)中逐出值的次數(shù)。 |
| boolean | isEmpty() | 檢查當前緩沖區(qū)是否為空。 |
| ListK | keys() | 獲取當前緩沖區(qū)中值的鍵列表。 |
| V | put(K key, V value) | 將鍵值對添加到緩沖區(qū)。 |
| OptionalV | remove(K key) | 從當前緩沖區(qū)中刪除指定的鍵及其關(guān)聯(lián)的值。 |
| int | size() | 獲取當前緩沖區(qū)中值的總數(shù)。 |
| String | toString() | 返回對象的字符串表示形式。 |
| void | updateCapacity(int newCapacity) | 將緩沖區(qū)容量更新為指定容量。 |
| ListV | values() | 獲取當前緩沖區(qū)中所有值的列表。 |
| 從類 java.lang.Object 繼承的方法 |
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
構(gòu)造函數(shù)詳細信息
LruBuffer
public LruBuffer()
默認構(gòu)造函數(shù)用于創(chuàng)建一個新的 LruBuffer 實例,默認容量為 64。
LruBuffer
public LruBuffer(int capacity)
用于創(chuàng)建新 LruBuffer 實例的構(gòu)造函數(shù)。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| capacity | 指示為緩沖區(qū)自定義的容量。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果容量小于或等于 0,則引發(fā)此異常。 |
方法詳情
afterRemoval
protected void afterRemoval(boolean isEvict, K key, V value, V newValue)
刪除值后執(zhí)行后續(xù)操作。
當使用 remove(java.lang.Object)、clear()、put(java.lang.Object,java.lang.Object) 或 updateCapacity(int) 方法時,會自動調(diào)用此方法。 您可以根據(jù)存儲值的特性來決定是否覆蓋該方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| isEvict | 因容量不足而調(diào)用該方法時參數(shù)值為真,其他情況下參數(shù)值為假。 |
| key | 表示已刪除的密鑰。 |
| value | 表示刪除的值。 |
| newValue | 如果調(diào)用了 put(java.lang.Object,java.lang.Object) 方法并且要添加的鍵已經(jīng)存在,則參數(shù)值是關(guān)聯(lián)的新值。 其他情況下參數(shù)值為空。 |
createDefault
protected V createDefault(K key)
如果未命中,則執(zhí)行后續(xù)操作以計算特定鍵的值。
如果在 get(java.lang.Object) 錯過計算鍵的值之后,會自動調(diào)用此方法。 您可以根據(jù)存儲值的特性來決定是否覆蓋該方法。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 表示遺漏的鍵。 |
返回:
返回與鍵關(guān)聯(lián)的值。
capacity
public final int capacity()
獲取當前緩沖區(qū)的容量。
返回:
返回當前緩沖區(qū)的容量。
clear
public final void clear()
從當前緩沖區(qū)中清除鍵值對。 當鍵值對被清除后,調(diào)用 afterRemoval(boolean,java.lang.Object,java.lang.Object,java.lang.Object) 方法依次對其執(zhí)行后續(xù)操作。
getMatchCount
public final int getMatchCount()
獲取查詢值匹配成功的次數(shù)。
返回:
返回查詢值匹配成功的次數(shù)。
getMissCount
public final int getMissCount()
獲取查詢值不匹配的次數(shù)。
返回:
返回查詢值不匹配的次數(shù)。
getPutCount
public final int getPutCount()
獲取將值添加到緩沖區(qū)的次數(shù)。
返回:
返回將值添加到緩沖區(qū)的次數(shù)。
contains
public final boolean contains(K key)
檢查當前緩沖區(qū)是否包含指定的鍵。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 表示要檢查的鍵。 |
返回:
如果緩沖區(qū)包含指定的鍵,則返回 true。
get
public final V get(K key)
獲取與指定鍵關(guān)聯(lián)的值。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 表示要查詢的鍵。 |
返回:
如果指定的鍵存在于緩沖區(qū)中,則返回與鍵關(guān)聯(lián)的值; 否則返回 null。
getCreateCount
public final int getCreateCount()
獲取 createDefault(java.lang.Object) 返回值的次數(shù)。
返回:
返回 createDefault(java.lang.Object) 返回值的次數(shù)。
isEmpty
public final boolean isEmpty()
檢查當前緩沖區(qū)是否為空。
返回:
如果當前緩沖區(qū)不包含任何值,則返回 true。
keys
public final ListK keys()
獲取當前緩沖區(qū)中值的鍵列表。
返回:
返回從最近訪問到最近訪問最少的鍵列表。
put
public final V put(K key, V value)
將鍵值對添加到緩沖區(qū)。
如果當前緩沖區(qū)已滿,最近最少訪問的鍵值對將被自動清除,為添加新的鍵值對騰出空間。 如果要添加的鍵已經(jīng)存在于緩沖區(qū)中,則其關(guān)聯(lián)的值將替換為要添加的值。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 表示要添加的鍵。 |
| value | 指示與要添加的鍵關(guān)聯(lián)的值。 |
返回:
返回與添加的鍵關(guān)聯(lián)的值; 如果要添加的鍵已經(jīng)存在,則返回原始值。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 key 或 value 為 null,則引發(fā)此異常。 |
getRemovalCount
public final int getRemovalCount()
獲取從緩沖區(qū)中逐出值的次數(shù)。
返回:
返回從緩沖區(qū)中逐出值的次數(shù)。
remove
public final OptionalV remove(K key)
從當前緩沖區(qū)中刪除指定的鍵及其關(guān)聯(lián)的值。
關(guān)聯(lián)值刪除后,會自動調(diào)用 afterRemoval(boolean,java.lang.Object,java.lang.Object,java.lang.Object) 方法對刪除的值進行后續(xù)操作。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| key | 表示要刪除的鍵。 |
返回:
返回一個包含已刪除鍵值對的 Optional 對象; 如果鍵不存在,則返回一個空的 Optional 對象。
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| NullPointerException | 如果 key 為 null,則引發(fā)此異常。 |
size
public final int size()
獲取當前緩沖區(qū)中值的總數(shù)。
返回:
返回當前緩沖區(qū)中值的總數(shù)。
toString
public String toString()
從類復制的描述:對象
返回對象的字符串表示形式。 通常,toString 方法返回一個“以文本方式表示”該對象的字符串。 結(jié)果應(yīng)該是一個簡潔但信息豐富的表示,易于人們閱讀。 建議所有子類重寫此方法。
Object 類的 toString 方法返回一個字符串,該字符串由對象作為其實例的類的名稱、at 符號字符“@”和對象哈希碼的無符號十六進制表示形式組成。 換句話說,此方法返回一個等于以下值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())覆蓋:
類 Object 中的 toString
返回:
對象的字符串表示形式。
updateCapacity
public final void updateCapacity(int newCapacity)
將緩沖區(qū)容量更新為指定容量。
如果指定的容量小于緩沖區(qū)中存儲的值的總數(shù),則根據(jù)最近最少訪問到最近訪問的訪問頻率清除值,直到數(shù)量等于指定容量。
參數(shù):
| 參數(shù)名稱 | 參數(shù)描述 |
|---|---|
| newCapacity | 表示要設(shè)置的新容量。 |
Throws:
| Throw名稱 | Throw描述 |
|---|---|
| IllegalArgumentException | 如果 newCapacity 小于或等于 0,則拋出此異常。 |
values
public final ListV values()
獲取當前緩沖區(qū)中所有值的列表。
返回:
按升序返回當前緩沖區(qū)中所有值的列表,從最近訪問到最近訪問最少。
當前文章:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS LruBuffer
網(wǎng)頁路徑:http://m.fisionsoft.com.cn/article/cddjsss.html


咨詢
建站咨詢
