RecordStore中索引探讨

本文介绍J2ME环境下如何通过RecordStore模拟索引机制提高数据检索效率,并展示了利用itemStateChange事件实现实时数据交互的方法,以及如何在用户界面中实现子项动态增删的特效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 索引,顾名思意就是在RecordStore中数据量比较大,搜索具体某条数据需要话费很长时间而产生的。以前没有接触过,在开发过程中,习惯性的将所有数据写入一个张表即一个RecordStore中,需要查找数据也是直接操作该表。
在j2me中可以模拟索引机制。一个Recordstore看作一个表,表中每条记录只有一列,同时Recordstore为每条记录自动分配一个独一无二的id.该id可以在RecordStore中的增加记录addstore方法的返回值中得到。明白了这点知识,就可以为原来的RecordStore建立一个索引Recordstore,该索引Recordstore包含原来recordstore添加数据产生的id,和用户自定义的一些关键字。关键字中所代表的详细信息在原来的RecordStore中存储,该过程用与该关键字对应的id即可从原来的recordstore取得详细信息。
具体代码:

byte[] data = account.serialize();
int id = rs.addRecord(data, 0, data.length);//rs为原来的数据库
Index index = new Index(account.getUserName(), id);//索引数据中只包含两个字段
rs_index.addRecord(index_data, 0, index_data.length);//rs_index为索引数据库

在学习手机通讯录中还有个知识点:
充分利用itemstatechange事件可以实现web编程中Ajax的实时与后台进行数据交换的效果

在界面方面有这样的一个特效,当选中某项,程序自动增加该项的子项
ChoiceGroup choice = new ChoiceGroup(null, ChoiceGroup.MULTIPLE);

//实现itemStateChange(Item item)接口
    public void itemStateChanged(Item item)
    {
        if (item == choice)
        {
            if (choice.isSelected(0))//当ChoiceGroup中的第一项被选中,则在其目录下,添加子项
            {
                phoneIndex = this.append(phoneField);
                emailIndex = this.append(emailField);
            }
            else
            {
                this.delete(emailIndex);
                this.delete(phoneIndex);
            }
        }       
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值