我正在做作业。我需要一个<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>();
答案 0 :(得分:1)
如果使用LinkedHashMap而不是使用迭代器移动的地图中的第一个元素,因为LinkedHashMap按照您输入的顺序保持对的顺序。请注意,如果从地图中获取对象,则需要删除并再次添加以保持linkedHashMap中对的顺序