在内存映射 IO 的帮助下存储和访问键值对和多个整数值的推荐方法



在java程序中,我需要临时存储许多记录 - 一条记录由键,对象和整数值组成。总处理将针对数百万条记录,但我计划在处理完成后删除一条记录......之后插入另一条记录,对其进行处理,然后将其删除。等等...

借助内存映射 IO 存储此类值的最佳方法是什么?

我可以看到映射字节缓冲区的示例,但是如何存储多个记录,然后检索它们...当我将记录添加到文件存储时,我是否必须存储位置编号,并使用这些记录来检索数据?然后我将不得不创建另一个数组来存储位置编号......是否有任何推荐的方法可以在 java 中使用内存映射 IO 存储/检索数据?

也许这就是你要找的:

http://code.google.com/p/vanilla-java/wiki/HugeCollections

另一种方法是使用 WeakHashmaphttp://docs.oracle.com/javase/6/docs/api/java/util/WeakHashMap.html

您可以使用 Hashmap,如果可以根据records key/int pair和值创建组合键作为object那么您可以将其存储在 HashMap 中,并在常量时间操作中从 hashMap 中删除值。


例:

    //Constructs a new empty HashMap with default initial capacity        
    HashMap hashMap = new HashMap();
    //Key would be combination of "record key/int pair"
    hashMap.put(Key1, new Integer(1)); 
    hashMap.put(Key2, new Integer(2));
    hashMap.put(Key3, new Integer(3));
    //You can remove values from HashMap in constant time using remove
    hashMap.remove(Key1);

最新更新