?? cnwordgroup.java~32~
字號(hào):
/**
* 該類映射為RMS中詞組記錄,詞組記錄主要記錄了一個(gè)Hashtabe中的數(shù)據(jù),該Hashtable中key為
* 詞(En或Cn)的String,value為該詞在詞庫(kù)(En庫(kù)或Cn庫(kù))中Recorrd ID,該類主要用于在查詢
* 時(shí),能快速縮小循環(huán)遍歷的范圍,直接定位到該詞組,然后在從Hashtable中記錄的id快速定位到
* 詞的詳細(xì)信息.
* 其中該類中的:enBaseNum和cnBaseNum分別記錄了En和Cn詞組的Rs ID開(kāi)始Num,因?yàn)樵O(shè)備不同,
* 開(kāi)始的Num可能不一樣,主要是用于計(jì)算Rs id時(shí),將固定算法的Id+baseNum,從而得出詞組ID
*/
package org.zblog.zenghelper.dbtool;
import java.util.Hashtable;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.Enumeration;
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
/**
* <p>Title: ZEngHelper</p>
*
* <p>Description: Z英漢詞典</p>
*
* <p>Copyright: Zcw Copyright (c) 2004</p>
*
* <p>Company: www.zblog.org Z動(dòng)力</p>
*
* @author 朱傳偉-ZCW
* @version 1.0
*/
public class CnWordGroup {
private int baseNum=0;
//記錄中 文字符串->id 集合
private Hashtable cnWords=null;
private byte[]bytes=null;
public CnWordGroup(String firstWord){
cnWords=new Hashtable();
}
/**
* 根據(jù)字符從RMS中加載字符數(shù)組
* @param fw String
*/
private void load(String fw){
}
/**
* 返回英文或中文字符的int型數(shù)值,以計(jì)算字符數(shù)組在RMS中的id
* @param word String
* @return int
*/
public int getWordNum(String word){
char c=word.charAt(0);
if(c<123)
return baseNum+c;
String t=(c+0)+"";
return baseNum+Integer.parseInt(t.substring(t.length()-3));
}
/**
* 查詢中文詞語(yǔ),如果找到,則返回該詞語(yǔ)的RMS id,
* 否則返回-1,表示沒(méi)有找到
* @param word String
* @return int
*/
public int searchWord(String word){
String vi=(String)cnWords.get(word);
if(vi!=null){
return Integer.parseInt(vi);
}
return -1;
}
/**
* 向詞組中添加單詞
* @param word String
* @param rid int
*/
public void addWord(String word,int rid){
}
/**
* 將Hashtable中的值轉(zhuǎn)換為byte[],主要用于數(shù)據(jù)庫(kù)存儲(chǔ)
* @return byte[] 返回該組別的byte[]格式
*/
public byte[] getBytes() throws IOException {
if(bytes==null&&cnWords.size()>0){
ByteArrayOutputStream bos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bos);
Enumeration enu=cnWords.keys();
Object key,value=null;
try{
dos.write(cnWords.size());
while (enu.hasMoreElements()) {
key = enu.nextElement();
value = cnWords.get(key);
dos.writeUTF((String) key);
dos.writeUTF((String) value);
}
}catch(Exception e){
e.printStackTrace();
}
bytes=bos.toByteArray();
dos.close();;
bos.close();
}
return bytes;
}
/**
* 從RMS中取出byte[],并恢復(fù)原格式
* @param data byte[]
*/
public void setByte(byte[]data){
if(data==null||data.length==0){
cnWords.clear();
return;
}
try{
ByteArrayInputStream bis = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bis);
int count = dis.readInt();
count=count/2;
cnWords.clear();
while(count>0){
cnWords.put(dis.readUTF(),dis.readUTF());
count--;
}
dis.close();
bis.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -