4

宿題をしています。<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>();
4

1 に答える 1

1

LinkedHashMap は入力した順序でペアの順序を保持するため、イテレータで移動するマップの最初の要素よりも LinkedHashMap を使用する場合。マップからオブジェクトを取得する場合は、削除してから再度追加して、linkedHashMap のペアの順序を維持する必要があることに注意してください。

于 2013-04-06T10:26:00.643 に答える