优先队列的问题
来源:8-8 Java中的PriorityQueue
qq_______13
2018-08-04
PriorityQueue<Freq> pq = new PriorityQueue<>(new Comparator<Freq>()
{@Override
public int compare(Freq a, Freq b)
{return a.freq - b.freq;}
});这段代码是什么意思,里面的方法什么时候后执行
写回答
1回答
-
liuyubobobo
2018-08-04
是规定元素之间如何比较的方法。在这里,规定了两个Freq类型的变量如何比较。
由于PriorityQueue是基于堆结构的,堆结构要求所存储的元素必须具有可比较性。对于元素的可比较,可以直接让元素本身实现Comparable接口,覆盖其中的compareTo方法。但是,对于一些Java的内置类型,不能用这种方式自定义比较方式(比如想要存储String类型,但是String之间的比较方式我想要修改一下,不是按照字典序,而是按照字符串长度),那么此时,就可以使用这种创建Comparator类对象的方式了:)
关于Java中的Comparator的使用方法,可以上网查询更多资料。不仅仅是在优先队列中,基本对于所有可以比较的情况,使用Java的标准库都可以使用Comparator的方式。最典型的,比如排序过程:)
加油!
30
相似问题