0

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

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

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

4

3 回答 3

0

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

于 2012-05-30T14:28:35.327 回答
0

也许这就是你正在寻找的:

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

于 2012-05-27T13:48:51.990 回答
0

您可以使用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);
于 2012-05-27T15:05:16.243 回答