收获
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")
*/
引用类型数据为空的不能调用方法;
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(), "选择");