Java 比较器语法?
Java Comparator syntax?
我对以下代码片段有点困惑:
PriorityQueue<String> pq = new PriorityQueue<>(new Comparator<String>() {
@Override
public int compare(String a, String b) {
return counts.get(b) - counts.get(a);
}
});
PriorityQueue的构造函数是PriorityQueue(Comparator<? super E> comparator)
,Comparator
是一个接口。
我的问题:
- 上面的代码好像把接口实现和实例化一下子结合起来了,请问是如何实现的?
- 如何传递
Comparator
实例本身而不将其分配给变量或名称?
参考:
https://sp18.datastructur.es/materials/discussion/examprep05sol.pdf
在这种情况下,Comparator
是一个匿名内部 class 实例。
我对以下代码片段有点困惑:
PriorityQueue<String> pq = new PriorityQueue<>(new Comparator<String>() {
@Override
public int compare(String a, String b) {
return counts.get(b) - counts.get(a);
}
});
PriorityQueue的构造函数是PriorityQueue(Comparator<? super E> comparator)
,Comparator
是一个接口。
我的问题:
- 上面的代码好像把接口实现和实例化一下子结合起来了,请问是如何实现的?
- 如何传递
Comparator
实例本身而不将其分配给变量或名称?
参考: https://sp18.datastructur.es/materials/discussion/examprep05sol.pdf
在这种情况下,Comparator
是一个匿名内部 class 实例。