2012-12-26 72 views
2

我爲我的緩存需要使用Infinispan 5.0.1。Infinispan緩存保留插入順序

我遇到的問題是我需要按照緩存中的相同順序從緩存中取回數據。 例如:

Cache<String, String> myCache = defaultCacheManager.getCache("myCache"); 
myCache.put("1", "ONE"); 
myCache.put("2", "TWO"); 
myCache.put("3", "THREE"); 
myCache.keySet(); 
Set<String> keySet = myCache.keySet(); 
for (String key : keySet) { 
    System.out.println(myCache.get(key)); 
} 

這應該打印出來: ONE TWO THREE

回答

0

我暫時通過使用ConcurrentLinkedHashMap 解決了這個問題,它很好用。 但是,如果有人知道「如何在Infinispan中完成」這個原始問題的答案,我會很感激。

-1

它爲什麼要打印出一二三? keySet()返回一個Set,它是一個無序集合。請參閱Javadocs for Set,瞭解其合約。

+0

現在,你錯了。 LinkedHashMap在JavaDoc中說:「這個鏈表定義了迭代排序,這通常是鍵被插入到映射中的順序(插入順序)」。如果你不相信我試試這個片段: LinkedHashMap map = new LinkedHashMap <>(); map.put(「1」,「ONE」); 012.map.put(「2」,「TWO」); map.put(「3」,「THREE」); map.put 設置 keySet = map.keySet(); (String key:keySet){ System.out.println(key +「=」+ map.get(key)); } – kovica