package edu.fudan.ml.types.alphabet;
import gnu.trove.impl.hash.TIntHash;
import gnu.trove.iterator.TIterator;
import gnu.trove.iterator.TObjectIntIterator;
import gnu.trove.map.hash.THashMap;
import gnu.trove.map.hash.TIntObjectHashMap;
/**
* 特征词典
* @author Feng Ji
*
*/
public interface IFeatureAlphabet extends IAlphabet {
/**
* 查询字符串索引编号
* @param str 字符串
* @param indent 间隔
* @return 字符串索引编号,-1表示词典中不存在字符串
*/
public int lookupIndex(String str, int indent);
/**
* 字典键的个数
* @return
*/
public int keysize();
/**
* 实际存储的数据大小
* @return
*/
public int nonZeroSize();
/**
* 索引对应的字符串是否存在在词典中
* @param id 索引
* @return 是否存在在词典中
*/
public boolean hasIndex(int id);
public TIterator iterator();
/**
* 按索引建立HashMap并返回
* @return 按“索引-特征字符串”建立的HashMap
*/
public TIntHash toInverseIndexMap();
}