[J2ME-原創(chuàng)] RMS遍歷類RecordFilter和RecordComparator用法
RMS提供的遍歷類RecordEnumeration,構(gòu)造函數(shù)原型如下:Public RecordEnumeration enumerateRecords (RecordFilter filter, RecordComparator comparator, boolean keepUpdated)
第一個(gè)參數(shù)是RecordFilter,它就是用來篩選數(shù)據(jù)庫中的紀(jì)錄的,篩選的條件就是我們需要定義的方法,boolean matches(byte[] data),如果不指定就不篩選。
第二個(gè)參數(shù)是RecordComparator,它是對(duì)選擇出來的數(shù)據(jù)進(jìn)行排序的,如果你不指定的話就按照默認(rèn)的順序排序。
第三個(gè)參數(shù)是boolean類型的,如果是true的話,那么record會(huì)跟蹤rms中的數(shù)據(jù)變化,這是比較昂貴的開銷,我一般都是用false的。
一般來說,用最簡單的即可:RecordEnumeration enumerateRecords(null, null, false);
RMS中遍歷RecordEnumeration經(jīng)常用到,其中接口RecordFilter經(jīng)常用,RecordComparator也會(huì)用到,但不多,現(xiàn)分別小結(jié)如下:
一。接口RecordFilter的使用
在 enumerateRecords 方法中,fifter為過濾參數(shù),需要自己定義一個(gè)繼承RecordFilter接口的過濾類,在類里面定義需要過濾的條件。RecordFilter接口只有一個(gè)需要實(shí)現(xiàn)的接口函數(shù),函數(shù)原型如下:
public boolean matches (byte[] candidate)
實(shí)現(xiàn)一個(gè) RecordFilter 接口的過濾類的基本結(jié)構(gòu)如下:



例:創(chuàng)建一個(gè)查找匹配字符“Hello”記錄的MyFilter類的具體代碼如下:













具體使用MyFilter類的代碼如下:











二。排序接口RecordComparator也會(huì)用到,雖然不多,也做一小結(jié)吧:
排序RecordComparator接口也有一個(gè)需要實(shí)現(xiàn)的接口函數(shù),原型如下:
public int compare (byte[] rec1, byte[] rec2)
rec1, rec2 分別指需要比較的兩條記錄的二進(jìn)制數(shù)據(jù),比較的結(jié)果返回一個(gè)int型數(shù)值,數(shù)值有三種可能:
RecordComparator.PRECEDES : rec1在rec2之前
RecordComparator.FOLLOWS : rec1在rec2之后
RrcordComparator.EQUIVALENT : 位置相等
實(shí)現(xiàn)一個(gè)RecordComparator接口的比較類基本結(jié)構(gòu)如下:



例:一個(gè)2條記錄字符串從小到大排序比較的代碼如下:

















具體使用MyComparator類的代碼如下:











posted on 2008-09-01 09:23 騎豬闖天下 閱讀(1288) 評(píng)論(1) 編輯 收藏