Chinaunix首页 | 论坛 | 博客
  • 博客访问: 628037
  • 博文数量: 796
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5095
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-10 09:43
文章分类

全部博文(796)

文章存档

2011年(1)

2008年(795)

我的朋友

分类:

2008-09-10 09:59:14

    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, nullfalse); //过滤条件是rf
        if (re.hasNextElement()){
            recordID 
= re.nextRecordId();
        }

    }
catch(Exception e) {
    }

[1]  

【责编:Chuan】

--------------------next---------------------

阅读(471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~