首页 > 解决方案 > 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是一个接口。

我的问题:

  1. 上面的代码好像一下子把接口实现和实例化结合起来了,是怎么实现的呢?
  2. 它如何传递Comparator实例本身而不将其分配给变量或名称?

参考: https ://sp18.datastructur.es/materials/discussion/examprep05sol.pdf

标签: javacomparator

解决方案


在这种情况下,Comparator是一个匿名的内部类实例。


推荐阅读