騎豬闖天下

          J2ME隨筆,記錄成長的腳步

          統(tǒng)計(jì)

          留言簿(3)

          閱讀排行榜

          評(píng)論排行榜

          [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)如下:

              public class MyFilter implements RecordFilter {
                  
          public boolean matches(byte[] rec) {}
                  }


                  例:創(chuàng)建一個(gè)查找匹配字符“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();
              
          //創(chuàng)建rs對(duì)象的代碼略
              RecordEnumeration re = null;
              
          try {
                  re 
          = rs.enumetateRecords(rf, nullfalse); //過濾條件是rf
                  if (re.hasNextElement()){
                      recordID 
          = re.nextRecordId();
                  }

              }
          catch(Exception e) {
              }



          二。排序接口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)如下:

              public class MyComparator implements RecordComparator {
                  
          public int compare(byte[] rec1, byte[] rec2) {}
              }


                  例:一個(gè)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 ();
              
          //創(chuàng)建rs對(duì)象的代碼略
              RecordEnumeration re = null;
              
              
          try {
                  re 
          = rs.enumerateRecords(null, rc, false);
                  
          if (re.hasNextElement()) {
                      recordID 
          = re.nextRecordId();
                  }

              }
          catch (Exception e) {}


          <End>

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

          評(píng)論

          # re: [J2ME-原創(chuàng)] RMS遍歷類RecordFilter和RecordComparator用法 2008-12-13 13:41 喝可樂的懶貓

          Very good!  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 青岛市| 蒲江县| 亳州市| 台北县| 江都市| 酉阳| 道真| 平遥县| 日喀则市| 呼玛县| 安康市| 富阳市| 资源县| 普安县| 衡水市| 高淳县| 盱眙县| 平罗县| 治多县| 金塔县| 贡觉县| 独山县| 三门峡市| 广东省| 桓台县| 馆陶县| 肃宁县| 常德市| 逊克县| 富蕴县| 四子王旗| 上栗县| 开平市| 泽库县| 政和县| 石渠县| 秀山| 灵寿县| 莱西市| 苏州市| 长岛县|