网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > JSP > 正文
RMS遍历类RecordFilter和RecordComparator用法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/29
下载{$ArticleTitle}原创论文样式

  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) {}

<End>

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号