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 回答