Java:PriorityQueue初始化

Eda*_*ame 3 java priority-queue

我试图了解启动优先级队列的以下行:

PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> b[1] - a[1]);
Run Code Online (Sandbox Code Playgroud)

与文档中的构造函数部分进行比较, https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

我无法弄清楚它使用的是哪个构造函数.有人可以分享一下这个想法吗?

此外,是否有一个文档可以更好地解释/定义语法(a, b) -> b[1] - a[1]...虽然我可以猜测它意味着什么.

非常感谢!

rge*_*man 6

你的构造PriorityQueue使用1.7中尚不存在的构造函数,这是你链接的Javadocs的版本.

它使用一个构造函数,Comparator构造函数接受为Java 1.8添加的构造函数,构造函数与您提供的lambda表达式匹配.

创建PriorityQueue具有默认初始容量的a ,并根据指定的比较器对其元素进行排序.

以来:

1.8

Lambda表达式是在Java 1.8中引入的.在这里,基本上你有两个与功能接口相匹配的参数和表达式- Comparator.