나는 주어진 ID로 샘플을 수행 개정의지도를 유지 코드 조각이있다. 관련 ID를 찾으려면TreeMap을 사용하여 주어진 키 값을 초과하는 모든 키/값 쌍을 검색 할 수 있습니까?</p> <pre><code>private Map<Long, SampleId> sampleRevisionMap = new HashMap<>(); </code></pre> <p>이를 유지하면서, 다른 스레드가 주어진 개정 번호 이후의 모든 변경 사항을 얻을 수에서 호출 할 수
public Set<SampleId> getRevisionIDs(long clientRevision) {
return sampleRevisionMap.entrySet().stream()
.filter(k -> k.getKey() > clientRevision)
.map(entry -> entry.getValue())
.collect(Collectors.toSet());
}
즉, 임계 값 이상인 키를 사용하여 모든 값을 제공하십시오.
이렇게하면 정렬 된지도 즉 java.utils.TreeMap을 사용하는 것이 더 좋습니다.
TreeMap이 동기화되지 않습니다. 모든 스레드가 키/값 쌍을 읽을 수 있다고 말하고 있습니다. 'synchronizedSortedMap = Collections.synchronizedSortedMap (treeMap)' – SomeDude
'synchronizedSortedMap'의 리턴 맵은 변경 가능할 것이고 다른 스레드는 하나의 스레드가 그것을 반복하고있는 동안 그것을 수정할 수 있습니다 (또는 꼬리 맵의 값). iterating thread는 iterating하는 스레드와 동기화되어야한다. ['synchronizedSortedMap' 문서 (https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#synchronizedSortedMap-java.util.SortedMap-)를 참조하십시오. – Lii