캐시 제거 정책을 구현하는 간단한 데이터 구조로 작업하고 있습니다. 구현하고자하는 두 가지 가능한 시나리오는 다음과 같습니다. LRU and MRULRU 및 MRU 캐시 축출 정책에 대한 정렬 된 키 데이터 구조
키가 가능한 가장 최근에 사용 된 캐시 블록 또는 가장 최근에 사용 된 캐시 블록을 알 수있는 키가 가능한 시간 (또는 자동 증가 된 정수) 인 맵과 같은 데이터 구조를 찾고 있습니다. . 값은 블록의 ID입니다.
삽입시 키를 기준으로 데이터를 정렬하고 O (1) 시간에 특정 키의 값을 검색하는 기존 데이터 구조가 있습니까?
예를 들어 Java의 HashMap은 일정한 시간 조회를 가지고 있지만, 구현중인 알고리즘에 따라 모든 키를 가져 와서 정렬하고 마지막 또는 처음을 선택해야합니다. SortedMap 내가 무엇을 위해 가야합니까? LRU 및 MRU 구현에서 잘 작동하는 다른 데이터 구조를 제안 하시겠습니까?
덕분에
동시성이 중요한 경우 [ConcurrentSkipListMap'] (http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ConcurrentSkipListMap.html)가 매우 유용 할 수 있습니다. [Guava 캐시] (http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/MapMaker.html) 또는 [MapMaker] (http : // guava -libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/collect/MapMaker.html). – Perception