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

Java 借助内存映射IO存储和访问键值对和多个整数值的推荐方法,java,memory-mapped-files,Java,Memory Mapped Files,在java程序中,我需要临时存储多条记录——一条记录包括一个键、一个对象以及一个整数值。总处理量将为数百万条记录,但我计划在完成处理后删除一条记录。。。插入另一条记录后,对其进行处理,然后将其删除。。。。等等 借助内存映射IO存储这些值的最佳方式是什么 我可以看到映射字节缓冲区的示例,但如何存储多个记录,然后检索它们。。。在向文件存储中添加记录时,是否必须存储位置号,并使用这些记录检索数据?然后我必须创建另一个数组来存储位置号。。。是否有任何推荐的方法可以使用java中的内存映射IO来存储/检索

在java程序中,我需要临时存储多条记录——一条记录包括一个键、一个对象以及一个整数值。总处理量将为数百万条记录,但我计划在完成处理后删除一条记录。。。插入另一条记录后,对其进行处理,然后将其删除。。。。等等

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


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

也许这就是您想要的:

您可以使用,如果您可以基于
记录键/int对
和值作为
对象
创建组合键,那么您可以将其存储在
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);

另一种方法是使用WeakHashmap

最简单的方法是安装一个MySQL副本并使用它。它包括一个可爱的缓存机制,它可能算作内存映射I/O。当然,您必须序列化java对象,但这是一个已经解决的问题。@TonyEnnis-记录需要临时存储在内存中-将对每个记录进行一些处理,然后丢弃每个记录-我尝试使用传统的arraylist和hashmaps,但即使在对该元素进行处理后从hashmap(或arraylist)中删除一个元素,它仍然保留在内存中-这就是为什么我要查看内存映射io…@Arvind:如果你从映射中删除它,它为什么会保留在内存中?如果它保留在内存中,这意味着要么您仍然有对记录的引用,要么因为JVM有足够的可用内存,所以不需要运行GC。如果插入一个记录,处理它,然后删除它,为什么需要存储许多记录?