编年史地图-获取键子集

问题描述

根据此answer,ChronicleMap的entrySet()。iterator()将转储内存中的所有对象。

我不想将所有对象加载到内存中并过滤内存中的整个地图-这违反了历史记录映射的目的。

因此,现在,给定编年史地图类型,键在0-1000之间,我将如何-

  1. 获取范围> = 500的密钥
  2. 删除范围内的密钥

解决方法

您可以使用ThreadLocal缓存此值或根据需要创建。

// cache as desired
LongValue key = Values.newHeapInstance(LongValue.class);

要获取许多值而不创建垃圾

// cached value for a Pojo
Pojo pojo = acquirePojo();

for (int i = 500; i < max; i++) {
    key.setValue(i);
    Pojo p2 = map.getUsing(key,pojo);
}

这将创建很少或没有垃圾来删除条目

for (int i = 0; i < 500 ; i++) {
    key.setValue(i);
    // assume map was built with removeReturnsNull(true)
    map.remove(key);
}