簡體   English   中英

Map.Entry上的實現隊列<K, V>

[英]Implementation queue over Map.Entry<K, V>

我正在做我的作業。 我需要一個<key, value>數據結構來存儲緩存。 此外,當新元素沒有空格時,我需要我的結構刪除最舊的項目(類似於LinkedHashMap.removeEldestEntry() )。

我想在Map.Entry<K, V>為隊列實現一個隊列。 這是解決問題的正確方法嗎?

說明:

public class Queue<K, V>
{
    protected LinkedList<MyEntry<K, V>> list;

    public Queue() {
        list = new LinkedList<MyEntry<K,V>>();
    }
    ////
}

final class MyEntry<K, V> implements Map.Entry<K, V> {
    private final K key;
    private V value;

    public MyEntry(K key, V value) {
        this.key = key;
        this.value = value;
    }

    @Override
    public K getKey() {
        return key;
    }

    @Override
    public V getValue() {
        return value;
    }

    @Override
    public V setValue(V value) {
        V old = this.value;
        this.value = value;
        return old;
    }
}

然后:

Queue<String, String> queue = new Queue<String>();

如果使用LinkedHashMap而不是使用迭代器移動的地圖中的第一個元素,因為LinkedHashMap按照您輸入的順序保持對的順序。 請注意,如果從地圖中獲取對象,則需要刪除並再次添加以保持linkedHashMap中對的順序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM