我试图创建一个优先级队列,根据第一个元素的值对整数数组进行排序,但我遇到了一个问题,编译器抱怨在我的编译器lambda表达式中需要一个数组。知道我搞砸了什么吗?
优先级队列
Line 22: error: array required, but Object found
PriorityQueue<int[]> kNearest = new PriorityQueue((a, b) -> b[0] > a[0]);
^
Line 22: error: array required, but Object found
PriorityQueue<int[]> kNearest = new PriorityQueue((a, b) -> b[0] > a[0]);
为了简单地回答您的问题,您返回的是布尔值,而不是比较器所要求的整数。
只需尝试以下操作:
PriorityQueue<int[]> kNearest = new PriorityQueue<>((a, b) -> Integer.compare(b[0],a[0]));
与a[0]相比,这将基于较小的b[0]值来订购项目。
这里的比较器检查等式并返回以下内容:
'
当两个参数相等时为“0”。
'
更新:正如史蒂芬C在评论中指出的,减法并不是完全证明。有关详细信息,请查看此。答案将更新为使用整数。比较(int,int)方法。
谢谢Kiran和zatef!我忘了钻石接线员。我还通过返回布尔值而不是int来搞乱了我的编译器。
修复版本:PriorityQueue
问题内容: 我有一个整数数组,我想计算重复出现的元素。首先,我读取数组的大小,并使用从控制台读取的数字对其进行初始化。在数组中,我存储了重复的元素。该数组存储元素连续出现的次数。然后,我尝试搜索重复序列并以特定格式打印它们。但是,它不起作用。 我希望输出看起来像这样: 例如: 如何找到重复的元素及其计数?如何如上所示打印它们? 问题答案: 字典(Java中的HashMap)可以轻松解决此类问题。
我试图创建一个没有重复的随机数组。 任务是从用户那里获取一个整数数组和最大值,用0到最大值之间的随机数填充数组,并显示没有重复的随机数组,不使用任何其他类,除了随机和扫描仪。 这是一个示例输出: 请输入数组的大小:10 请输入最大值:50 [39,2,17,49,12,19,40,31,42,15] 我需要帮助删除重复的内容。我不确定我所做的是否正确,我是一个初学者,但这是我目前所做的。非常感谢帮
我有一个问题编码这个: 编写一个名为的静态方法,该方法将整数数组作为输入,并返回一个新的整数数组,其中所有重复项都被删除。例如,如果输入数组具有元素{4,3,3,4,5,2,4},则结果数组应为{4,3,5,2} 这是我目前所做的
我想知道在java中是否有一种方法可以在数组中的特定索引处提取和找到integer。然后我想把这个整数存储在一个变量中。这是可以做到的吗?
想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 你能展示一下你是否得到了一个由n个整数组成的数组吗。数组中的整数介于1和n-1之间。必须找到重复的整数。你需要在O(n)时间内完成,但你可以使用额外的空间。 输入格式:输入包含数组中的元素数,后跟数组中的元素。 输出格式:输出返回重复的整数,如果没有重复,则返回-1。 示例测试用例: 输入:5 1 4 3 2 3 输出:3 输入4
在SDA中输入std代码时,我输入了带有零的std代码,但为什么零不在显示数组时的值中?