2012-12-26 3 views
2

내 캐싱 요구 사항에 Infinisan 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 두 세

답변

0

당분간 나는 ConcurrentLinkedHashMap 을 사용하여이 문제를 해결했으며 정상적으로 작동합니다. "Infinispan에서 수행하는 방법"이라는 원래 질문에 대한 답을 알고있는 사람이라면 고맙겠습니다.

-1

왜 하나 둘 셋을 인쇄해야합니까? keySet()은 정렬되지 않은 컬렉션 인 Set을 반환합니다. 그것의 계약을 이해하기 위해 Set 용 Javadocs를 보라.

+0

여기 이제 틀렸어. LinkedHashMap은 JavaDoc에서 "이 링크 된 목록은 일반적으로 키가 맵 (삽입 순서)에 삽입되는 순서 인 반복 순서를 정의합니다." 그리고 만약 당신이 내가이 스 니펫을 시도한다고 믿지 않는다면 : LinkedHashMap map = new LinkedHashMap <>(); map.put ("1", "ONE"); map.put ("2", "TWO"); map.put ("3", "THREE"); 세트 keySet = map.keySet(); for (String key : keySet) { System.out.println (key + "="+ map.get (key)); } – kovica