gpt4 book ai didi

java - 使用比较器初始化 PriorityQueue

转载 作者:行者123 更新时间:2023-12-01 19:29:39 25 4
gpt4 key购买 nike

编译器(Java 8)提示以下代码没有合适的构造函数:

PriorityQueue<ListNode> heap = new PriorityQueue((ListNode n1, ListNode n2) -> n1.val - n2.val)

但是,预先创建比较器然后将其传递给 PriorityQueue 是可行的,

Comparator<ListNode> c = (ListNode n1, ListNode n2) -> n1.val - n2.val;
PriorityQueue<ListNode> heap = new PriorityQueue(c);

我想知道为什么第一种方法失败了?是因为编译器无法从 lambda 表达式推断出 Comparator 类型吗?

最佳答案

您正在使用此PriorityQueue(Comparator<? super E> comparator)构造函数。并且您没有为 E 提供任何类型,其中 E 应该是 ListNode 。要修复您的代码,只需像这样编写

PriorityQueue<ListNode> heap = new PriorityQueue<ListNode>((ListNode n1, ListNode n2) -> n1.val - n2.val);
// or
PriorityQueue<ListNode> heap = new PriorityQueue<>((ListNode n1, ListNode n2) -> n1.val - n2.val);

关于java - 使用比较器初始化 PriorityQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60140529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com