RMS
提供的遍历类RecordEnumeration,构造函数原型如下:Public RecordEnumeration
enumerateRecords (RecordFilter filter, RecordComparator comparator,
boolean keepUpdated)
第一个参数是RecordFilter,它就是用来筛选数据库中的纪录的,筛选的条件就是我们需要定义的方法,boolean matches(byte[] data),如果不指定就不筛选。
第二个参数是RecordComparator,它是对选择出来的数据进行排序的,如果你不指定的话就按照默认的顺序排序。
第三个参数是boolean类型的,如果是true的话,那么record会跟踪rms中的数据变化,这是比较昂贵的开销,我一般都是用false的。
一
般来说,用最简单的即可:RecordEnumeration enumerateRecords(null, null,
false);RMS中遍历RecordEnumeration经常用到,其中接口RecordFilter经常用,RecordComparator也
会用到,但不多,现分别小结如下:
一、接口RecordFilter的使用
在 enumerateRecords
方法中,fifter为过滤参数,需要自己定义一个继承RecordFilter接口的过滤类,在类里面定义需要过滤的条件。RecordFilter接
口只有一个需要实现的接口函数,函数原型如下:public boolean matches (byte[] candidate)
实现一个 RecordFilter 接口的过滤类的基本结构如下:
public class MyFilter implements RecordFilter {
public boolean matches(byte[] rec) {}
}
例:创建一个查找匹配字符“Hello”记录的MyFilter类的具体代码如下:
public class MyFilter implements RecordFilter
{
public boolean matches(byte[] rec)
{
String str = new String(rec);
if(str.equals("Hello") )
{
return true;
}else{
return false;
}
}
}
具体使用MyFilter类的代码如下:
RecordStore rs;
RecordFilter rf = new MyFilter();
//创建rs对象的代码略
RecordEnumeration re = null;
try {
re = rs.enumetateRecords(rf, null, false); //过滤条件是rf
if (re.hasNextElement()){
recordID = re.nextRecordId();
}
}catch(Exception e) {
}
二、排序接口RecordComparator也会用到,虽然不多,也做一小结吧:
排序RecordComparator接口也有一个需要实现的接口函数,原型如下:public int compare (byte[] rec1, byte[] rec2)
rec1,
rec2
分别指需要比较的两条记录的二进制数据,比较的结果返回一个int型数值,数值有三种可能:RecordComparator.PRECEDES :
rec1在rec2之前RecordComparator.FOLLOWS :
rec1在rec2之后RrcordComparator.EQUIVALENT : 位置相等
实现一个RecordComparator接口的比较类基本结构如下:
public class MyComparator implements RecordComparator {
public int compare(byte[] rec1, byte[] rec2) {}
}
例:一个2条记录字符串从小到大排序比较的代码如下:
public class MyComparator implements RecordComparator {
public int compare(byte[] rec1, byte[] rec2)
{
String str1 = new String(rec1);
String str2 = new String(rec2);
int result = str1.compareTo(str2);
if (result == 0) {
return RecordComparator.EQUIVALENT;
} else if (result < 0) {
return RecordComparator.PRECEDES;
} else {
return RecordComparator.FOLLOWS;
}
}
}
具体使用MyComparator类的代码如下:
RecordStore rs;
RecordComparator rc = new RecordComparator ();
//创建rs对象的代码略
RecordEnumeration re = null;
try {
re = rs.enumerateRecords(null, rc, false);
if (re.hasNextElement()) {
recordID = re.nextRecordId();
}
}catch (Exception e) {}
分享到:
相关推荐
6. `RMS遍历类RecordFilter和RecordComparator用法-J2ME.mht`:这个文件可能详细介绍了如何使用RecordFilter和RecordComparator来高效地遍历和操作RMS中的数据。 7. `JSP资料辅导(4--2).mht`:这部分可能涉及Java...
同时,通过RecordEnumeration遍历记录,使用RecordComparator和RecordFilter进行排序和筛选,以满足各种查询需求。RecordListener可以监听并响应数据变化,实现数据的实时同步或其他业务逻辑。 总结来说,RMS是J2ME...
5. 查询和遍历记录:`RecordStore.enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean startAtFirst)` 允许你按特定条件遍历记录。`RecordFilter` 可用于筛选记录,`RecordComparator` 可...
通过`RecordStore.enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean skipDeleted)`获取RecordEnumeration对象,其中filter和comparator可选,用于过滤和排序记录。 修改记录使用`set...
8. **遍历记录**:通过`RecordStore.enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean startAtFirst)`可以按照特定条件(如名字或电话号码)遍历所有记录,这在查询或排序时非常有用。...
遍历RecordStore的方法可以帮助开发者获取存储在RMS中的记录。 **3.3 RecordFilter – 条件判断** `RecordFilter`类用于对RMS中的记录进行筛选。 **3.4 RecordComparator – 结果排序** `RecordComparator`类...