【问题标题】:Chroniclemap - fetch subset of keysChroniclemap - 获取键的子集
【发布时间】:2020-11-11 00:49:04
【问题描述】:

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

我不想加载内存中的所有对象并过滤内存中的整个地图 - 这违背了 Chroniclemap 的目的。

那么现在,给定一个编年史地图类型 ,以及 0-1000 范围内的键,我将如何 -

  1. 获取范围 >= 500 的键
  2. 删除键范围

【问题讨论】:

    标签: java chronicle chronicle-map


    【解决方案1】:

    您可以使用 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 2016-07-28
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多