完成基于哈夫曼树(最优二叉树)的压缩及解压小程序的收获
来源:互联网 发布: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
- 完成基于哈夫曼树(最优二叉树)的压缩及解压小程序的收获
- 基于哈夫曼编码完成的文件压缩及解压
- 自建二叉树,及收获的经验
- 最优二叉树的利用程序
- 哈夫曼树(最优二叉树)的创建
- 最优二叉树(或者最优树)的建立过程
- 编写Shell程序,通过编写完成compress1、decompress1函数,选择“压缩”或“解压”以及输入文件名,来自动完成文件的压缩、解压过程。
- Java的压缩、解压及压缩加密、解密解压 例子
- 基于哈夫曼编码的文件压缩解压
- 哈夫曼树(huffman)--最优二叉树的编码实现
- 二叉树的小程序
- 简单的解压小程序
- Java小程序之哈夫曼树与文件压缩和解压缩(三)文件解压篇
- 写程序顺手的小收获~
- 二叉树的应用—最优二叉树(哈夫曼树)
- 哈夫曼树(最优二叉树)及哈夫曼算法
- Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序
- 哈夫曼编码及文本文件的压缩解压(c++SourceCode)
- redis
- leetcode 110Balanced Binary Tree
- Odi银行储蓄系统
- Server SQL 发布复制事物时的错误提示:读取代理器未运行 进程无法在“WIN-XXX”上执行“sp_replcmds”
- noi2015模板-最小表示
- 完成基于哈夫曼树(最优二叉树)的压缩及解压小程序的收获
- HOW TO SET UP ADB (ANDROID DEBUG BRIDGE) IN MAC OSX
- C#子窗体调用主窗体中事件
- Scala归并排序解析
- noi2015模板-后缀自动机
- PHP中类的继承关系
- 多个mapreduce工作相互依赖处理方法完整实例
- 关于iOS逆向工程的工具(二)
- 新书出版了 - 移动App测试实战