快速业务通道

RMS遍历类RecordFilter和RecordComparator用法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

RMS遍历类RecordFilter和RecordComparator用法

时间:2011-08-26

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;      }    }  }

RMS遍历类RecordFilter和RecordComparator用法(2)

时间:2011-08-26

具体使用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) {}  }

RMS遍历类RecordFilter和RecordComparator用法(3)

时间:2011-08-26

例:一个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) {}<End>

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号