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


收获

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

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


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

学会了:
HuffmanTree 的使用;

PriorityQueue优先级队列的使用;

PriorityQueue list=new PriorityQueue();
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];
			i = "";
		}

String追加字符+"n";

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

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

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

while(hcd.huffmanCodeAndFileData.length()%8!=0)
{
	hcd.huffmanCodeAndFileData.append("0");
	count++;
}
输出流以字节数组的方式输出字符串;

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

String substring =hcd.huffmanCodeAndFileData.substring(0, 8);
hcd.huffmanCodeAndFileData.delete(0, 8);
 二进制01字符串转化成整形十进制数和其逆过程; 
  

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

HashMap map=new HashMap();
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(), "选择");

你可能感兴趣的:(完成基于哈夫曼树(最优二叉树)的压缩及解压小程序的收获)