完成基于哈夫曼树(最优二叉树)的压缩及解压小程序的收获

来源:互联网 发布:python 中英文对照 编辑:程序博客网 时间:2024/06/07 21:02


收获

     1) 更有条理的构造我的代码了:

先从main方法下手,将自己想要的实现程序的功能以注释 的方式写出来,然后再逐渐细化每一部分的功能,每部分的功能都有非常明确的输入部分,将这些输入的内容加工,进行输出(也就是下一部分功能的实现的输入部分)就是这部分功能的全部内容,每一部分功能都实现,程序就完成了。


2)学会使用DeBug来检验自己程序的执行结果:
       通过上课,对自己有所启发,解决了我对一些结果不是图形的程序的校验的短板(结果都是看不到的555...),,在解压与压缩及追加的界面程序中多次使用DeBug  自行找出问题所在并解决。真的很有用。

学会了:
HuffmanTree 的使用;

PriorityQueue优先级队列的使用;

PriorityQueue<Node> list=new PriorityQueue<Node>();Node leftNode =list.poll();Node rightNode =list.poll();
for的队列循环和某些注意事项;
                for (String i : allCode) {i="";}for (int j = 0; j < allCode.length; j++) {String i = allCode[j];<span style="white-space:pre"></span>i = "";
<span style="white-space:pre"></span>}

String追加字符+"n";

StringBuffer追加字符append("n");

/ * String追加字符+"n";StringBuffer追加字符append("n")*/
引用类型数据为空的不能调用方法;
在字符串前面和后面加“0”;

while (countStr.length()<8){countStr="0"+countStr;}

while(hcd.huffmanCodeAndFileData.length()%8!=0){<span style="white-space:pre"></span>hcd.huffmanCodeAndFileData.append("0");count++;}
输出流以字节数组的方式输出字符串;

<span style="white-space:pre"></span>byte[] bytes = hcd.huffmanCodeAndFileData.toString().getBytes();<span style="white-space:pre"></span>bos.write(bytes);
<span style="white-space:pre"></span>//输出\入流操作字符串的方法,将字符串转成字节数组。(toString().getBytes())
截取及截断字符串;

String substring =hcd.huffmanCodeAndFileData.substring(0, 8);
<pre name="code" class="java">hcd.huffmanCodeAndFileData.delete(0, 8);

二进制01字符串转化成整形十进制数和其逆过程;

int parseInt =Integer.parseInt(substring, 2);
String  countStr =Integer.toBinaryString(count);
哈希图的使用;

HashMap<String, Integer > map=new HashMap<String, Integer>();map.put(huffmanCoe,i);map.containsKey(FileDataByHuffmanCode)
输入流的mark()与Reset()的组合;

bis.mark(-1);
bis.reset();
JFileChooser的使用;
JFileChooser jfc = new JFileChooser();jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);jfc.showDialog(new JLabel(), "选择");

0 0