2015-05-20 51 views
0

我在研究LRU缓存算法。我有一个关于pair []的问题,getAll(),这是在缓存界面中定义的方法。什么是pair [] getAll()是否意味着在LRU缓存中?

interface Cache<K extends Comparable, V> { 
    V get(K obj); 
    void put(K key, V obj); 
    void put(K key, V obj, long validTime); 
    void remove(K key); 
    Pair[] getAll(); 
    int size(); 
} 

在LRUCache类中。该方法被执行。

public Pair[] getAll() { 
    Pair p[] = new Pair[m_maxSize]; 
    int count = 0; 
    synchronized(m_listLock) { 
     Item cur = m_start.next; 
     while(cur!=m_end) { 
      p[count] = new Pair(cur.key, cur.value); 
      ++count; 
      cur = cur.next; 
     } 
    } 
    Pair np[] = new Pair[count]; 
    System.arraycopy(p, 0, np, 0, count); 
    return np; 
    } 

正如您所看到的,我很好奇为什么以及如何在getAll()方法之前使用pair []?为什么使用它?

非常感谢!

回答

0

顾名思义,getAll()将从缓存中返回所有项目(键值对)的数组。 key-value已被抽象为与Map.Entry类似的Pair - http://docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html

+0

感谢您的回复。所以,这实际上返回一个名为pair的数组,而pair []不仅仅是arrary,而是包含像Entryset这样的键 - 值关系。我没有看到用于装饰的方法,颇有意思。谢谢! –

+0

@詹姆斯,如果我的文章回答您的查询,然后upvoting或选择这个答案肯定会帮助:) – Kishore