在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);