压缩用到的其他类:
/**
* 哈夫曼树中给叶子节点设置的编码类
* @author 客
*
*/
public class Code {
//哈夫曼编码
private String code = "";
/**
* 输出Code类对象的方法
*/
public String toString(){
return "编码:"+code+" 长度:"+code.length();
}
/**
* 得到编码内容
* @return
*/
public String getCode() {
return code;
}
/**
* 设置编码内容
* @param code
*/
public void setCode(String code) {
this.code = code;
}
}
/**
* 哈夫曼树结点类
* @author 客
*
*/
public class hfmNode implements Comparable<hfmNode>{
//字符的ASCII码值
private int ascii;
//字符的出现次数
private int times;
//当前结点的左子结点
private hfmNode lChild;
//当前结点的右子结点
private hfmNode rChild;
/**
* 构造方法
* @param i ASCII的值
* @param times 文件中的出现次数
*/
public hfmNode(int ascii,int times){
this.ascii = ascii;
this.setTimes(times);
}
/**
* 得到结点字符ASCII值得方法
* @return ASCII码值
*/
public int getAscii() {
return ascii;
}
/**
* 设置结点字符的ASCII值
* @param ascii
*/
public void setAscii(int ascii) {
this.ascii = ascii;
}
/**
* 得到当前结点字符出现次数的方法
* @return
*/
public int getTimes() {
return times;
}
/**
* 设置当前结点字符出现次数的方法
* @param times
*/
public void setTimes(int times) {
this.times = times;
}
/**
* 得到当前结点左孩子的方法
* @return 左子结点
*/
public hfmNode getlChild() {
return lChild;
}
/**
* 设置当前结点左孩子的方法
* @param lChild
*/
public void setlChild(hfmNode lChild) {
this.lChild = lChild;
}
/**
* 得到当前结点右孩子的方法
* @return 右子结点
*/
public hfmNode getrChild() {
return rChild;
}
/**
* 设置当前结点右孩子的方法
* @param rChild
*/
public void setrChild(hfmNode rChild) {
this.rChild = rChild;
}
/**
* 输出hfmNode类对象--哈夫曼结点的方法
*/
public String toString(){
return "ascii="+(char)ascii+" times="+times;
}
/**
* 定义在队列中进行排序比较的属性
*/
public int compareTo(hfmNode o) {
return times-o.getTimes();
}
}
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-33591-2.html
教授说了