浅析Comparable接口和collection的排序

今天LZ在做Huffman编解码,需要做的模块中有一个就是,对于字符出现的frequency来按从小到大顺序排序,然后等下继续构建frequency的排序序列,我最后选用的方案是自己用linkedlist来模拟HuffmanNode队列,那么一个问题就是怎么按照对象的属性来排序。1):在网上看了发现可以让HuffmanNode类实现Comparable接口,注意的是其中的compareTo(objectthat)方法,返回的是整数,0,负数。当对象比that大,返回整数;比that小,返回负数;等于,0

public class HuffNode implements Comparable{public char lett;//字母public int freq;//频率public HuffNode left;//左节点public HuffNode right;//右节点public HuffNode(){lett = ‘\0’;freq = 0;left = right =null;}public HuffNode(int freq){this.freq = freq;}/** * 和that比较频率大小 * @param that * @return */public int compareTo(Object that){HuffNode other = (HuffNode)that;return freq – other.freq;}public String toString(){return lett+"/"+freq;}}2)那么怎么使用排序呢?结合题目来看,我需要一个队列,那我先写个接口PQueue

接下来写我们自定义的队列类:

这里我用的是linkedlist来模拟的,,因为linkedlist继承了Queue<E>接口,直接用offer和poll方法说了这么久了给大家看结果

结果如下:1 2 2分析下确实是对的。下篇博客LZ将说一下简单的huffman编解码怎么做,谢谢大家



我们人生中最大的懒惰,就是当我们明知自己拥有作出选择的能力,

浅析Comparable接口和collection的排序

相关文章:

你感兴趣的文章:

标签云: