j2me大量数据的存储问题

在j2me开发中经常会需要存储大量的数据。如果采用普通的存储模式:创建一个RMS,然后将数据一条一条的存入。但是这样带来的问题是在进行删除操作时候,效率会非常非常的低。经常执行了删除操作后,会持续很长一段时间的定屏。这是由于RMS的访问机制造成的。这里对RMS的机制不做深究。下面讲一个比较效率的解决办法:
这个办法也是利用了RMS的一些特点,并避开了RMS的缺点:
1.一个RMS中的存储ID永远是唯一的。一个RMS中删除一条存储数据后, 这条数据所对应的ID就永远的消失了。
2.RMS中存储一条数据时候,执行删除操作时候效率不会低。
3.删除RMS比删除RMS中的一条数据速度会快(RMS中存储的数据越多,越明显)。
4.如果存储的数据很小,在RMS中存入多条不会出现删除定屏的问题.
利用以上的特点,解决方法如下:
存储的时候:
1.给每条存入的大量数据定一个名称,一般的存储中,都会存在名称,并且名称一般都会比较短。
2.利用特点4,创建一个RMS(RMS1),然后将名称存入RMS1中,这时候获取存储ID.
3.定义一个String常量Str_Final ,创建一个Str_FInal+ID的RMS,将大型的数据存入,存入的原则是首先清空原来RMS中的所有数据(这个很好清,因为一般里面只存在一条数据,大部分的情况是RMS中是空的),然后存入数据,这样保证了RMS(Str_Final+ID)中只有一条数据。这个是利用了特点1,由于ID是唯一的,因此Str_Final+ID也是唯一的,因此创建出来的RMS也是唯一的。
4.重复执行1~3条。
访问的时候:
1.首先打开存储名称的RMS1,找到需要的名称,返回这个名称的ID;
2.打开Str_Final+ID这个RMS,找到最后一条数据(其实也是第一条RmS),读取出数据,这个数据就是我们所需要的.
删除的时候:
1.打开RMS1,找到需要的名称,返回ID.
2.删除Str_Final+ID这个RMS.
3.删除RMS1的第ID条数据。
说明:RMS1在这里并不仅仅只是一个映射RMS,因为在实际的应用中,大量的数据的存储总会有一个代号,就像是再坦克大战OL中的地图下载,地图的名称就可以存入RMS1中,而地图的内容就可以存入一个一个的Str_Final+ID的RMS中。因此在获取下载的地图列表时候通过遍历RMS1即可实现。在便利RMS1的过程中,顺便记录下没一条记录所对应的ID.那么又可以很方便的找到每一条地图列表所对应的RMS,一箭双雕。
缺点:
1.创建大量的RMS会消耗比较多的存储空间(未证实)。
2.某些手机上对RMS的数量有限制。
最后:这种方法是我在开发中一直在用的,到目前还没有发现有什么问题,希望对大家有用。
如果还有更好的方法,希望不吝赐教。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值