java - Java比较器语法?
问题描述
我对以下代码片段有点困惑:
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
是一个匿名的内部类实例。
推荐阅读
- oracle - 在没有前向声明的情况下为另一个过程中的私有过程提供范围
- c# - 如何将一个应用程序的 UI 集成到另一个应用程序中?
- r - 保持每组观察次数最少的行
- reactjs - React Hook:仅当用户停止输入时才向服务器发送数据
- java - 在 switch 函数中如何在每个 case 块中获取 case 值
- php - 从 WooCommerce 中的父变量产品设置订单项目永久链接
- node.js - 中断后返回瀑布对话框
- python - 检查文本文件的字典中是否已存在密钥
- c# - 如何以不同形式获取两个标签中的滚动条值
- botframework - 没有这样的主机是已知的-QnA Maker