`

RMS遍历类RecordFilter和RecordComparator用法

    博客分类:
  • J2ME
阅读更多
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) {} 
 
分享到:
评论
2 楼 xiaoqing20 2010-05-19  
一看明白 立刻上手用
1 楼 xiaoqing20 2010-05-19  
这篇文章不错

相关推荐

    cankaowenxian.rar_java 参考 文献

    6. `RMS遍历类RecordFilter和RecordComparator用法-J2ME.mht`:这个文件可能详细介绍了如何使用RecordFilter和RecordComparator来高效地遍历和操作RMS中的数据。 7. `JSP资料辅导(4--2).mht`:这部分可能涉及Java...

    RMS数据管理程序设计.doc

    同时,通过RecordEnumeration遍历记录,使用RecordComparator和RecordFilter进行排序和筛选,以满足各种查询需求。RecordListener可以监听并响应数据变化,实现数据的实时同步或其他业务逻辑。 总结来说,RMS是J2ME...

    J2ME中RMS存储工具使用解析

    5. 查询和遍历记录:`RecordStore.enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean startAtFirst)` 允许你按特定条件遍历记录。`RecordFilter` 可用于筛选记录,`RecordComparator` 可...

    J2ME_rms数据存储详解

    通过`RecordStore.enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean skipDeleted)`获取RecordEnumeration对象,其中filter和comparator可选,用于过滤和排序记录。 修改记录使用`set...

    J2ME的RMS增删改查的简单事例

    8. **遍历记录**:通过`RecordStore.enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean startAtFirst)`可以按照特定条件(如名字或电话号码)遍历所有记录,这在查询或排序时非常有用。...

    j2me保存永久数据

    要操作RMS,首先需要导入`javax.microedition.rms`包,该包包含了RecordStore类以及RecordComparator、RecordFilter、RecordListener和RecordEnumeration四个接口,还有五种异常类用于处理操作过程中的错误情况。...

    AnyFo - Java ME化骨棉掌.doc

    遍历RecordStore的方法可以帮助开发者获取存储在RMS中的记录。 **3.3 RecordFilter – 条件判断** `RecordFilter`类用于对RMS中的记录进行筛选。 **3.4 RecordComparator – 结果排序** `RecordComparator`类...

    Java手机程序设计入门12

    - 包含三个接口:`RecordComparator`用于比较记录,`RecordFilter`用于过滤记录,`RecordListener`用于监听记录事件。 - 定义了五种异常:`InvalidRecordException`、`RecordStoreException`、`...

    J2ME考试复习试题

    - `RecordStore`类中的`enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean keepUpdated)`方法用于枚举记录。参数`filter`用于指定过滤条件,`comparator`用于指定排序规则,`...

    j2me api中文版

    42. **Object**: 所有Java类的超类,提供了基本的方法和属性。 43. **OutOfMemoryError**: 当Java虚拟机没有足够的内存来分配新对象时抛出的错误。 44. **OutputConnection**: 输出连接接口,用于向远程服务器发送...

    java j2me 学习与开发

    深入阅读MIDP的API文档,理解每个类和方法,尤其是MIDlet、Display、Form、Item等关键组件。 5. **UI设计**:J2ME的UI分为高级UI(如Form、ChoiceGroup)和低级UI(如Canvas)。根据需求选择合适的UI组件,高级UI...

    FilterExpression.zip

    项目"FilterExpression"可能是核心库,其中包含了将Lambda表达式转换为所需格式的算法和类。这些转换可能涉及到解析Lambda表达式树,识别其组成部分(如参数、运算符和方法调用),然后映射到相应的数据库查询或Web...

    J2ME中文帮助文档

    83. **RecordComparator/RecordEnumeration/RecordFilter/RecordListener/RecordStore**: 提供记录存储和管理的功能。 84. **RecordStoreException/RecordStoreFullException/RecordStoreNotFoundException/...

    手机游戏开发_B卷

    - 使用 `DrawRect()` 方法绘制矩形时,至少需要知道前两个参数才能计算出矩形的面积,这两个参数分别是矩形的宽度和高度。 #### Runnable 接口与线程实现 - 实现 `Runnable` 接口的方式是重写 `run()` 方法。`run()...

    嵌入式系统/ARM技术中的新手如何学好J2ME

    此外,熟练掌握Record Management System (RMS)是保存数据的关键,通过使用RecordFilter和RecordEnumeration,可以使数据管理变得更加高效。 线程在J2ME开发中扮演重要角色,特别是在处理网络通信时,多线程能避免...

Global site tag (gtag.js) - Google Analytics