gpt4 book ai didi

Java PriorityQueue Comparator 在特定条件下插入二维数组

转载 作者:行者123 更新时间:2023-12-04 17:15:10 27 4
gpt4 key购买 nike

我有一个二维数组 arr= [[1,4],[4,4],[2,2],[3,4],[1,1]]

我想按照以下顺序将其存储在 PriorityQueue 中:[[1,1],[2,2],[1,4],[3,4],[4,4]]

  1. 如果两个数组的第一个元素相同,则第二个元素值较小的应该先出现

  2. 如果两个数组的第二个元素相同,则第一个元素值较小的应该先出现

  3. 否则第二个元素值较小的应该先出现

我尝试了以下代码:

import java.io.*;
import java.util.*;
class Check2
{
public static void main(String[] args) {
int events[][]={{1,4},{4,4},{2,2},{3,4},{1,1}};
PriorityQueue<int[][]> min_heap= new PriorityQueue<int[][]>(events ,new Comparator<Integer>()
{
@Override
public int compare(int a[][], int b[][])
{
int res=-1;

if(a[0][1]==b[0][1])
{
if(a[0][0]>b[0][0])
res=-1;
else
res=1;
}
else
{
if(a[0][1]>b[0][1])
res=-1;
else
res=1;
}
}
}
);

}
}

我收到以下错误:

Check2.java:8: error: <anonymous Check2$1> is not abstract and does not override abstract method compare(Integer,Integer) in Comparator
{
^
Check2.java:9: error: method does not override or implement a method from a supertype
@Override
^
Check2.java:7: error: incompatible types: int[][] cannot be converted to int
PriorityQueue<int[][]> min_heap= new PriorityQueue<int[][]>(events ,new Comparator<Integer>()
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
3 errors

我知道比较函数不适用于此处的二维数组,但我该如何获得结果。

我尝试通过检查所有地方来实现其他技术,但没有成功。请帮忙。

最佳答案

排队

PriorityQueue<int[][]> min_heap= new PriorityQueue<int[][]>(events ,new Comparator<Integer>()

您提供集合作为第一个参数,但是 PriorityQueue没有这样的构造函数。您不能在一个构造函数中提供比较器和集合。

而且您仍然不需要在 PriorityQueue 中存储 int[][] 来解决这个问题,而是存储 int[]

public static void main(String[] args) {
int[][] events ={{1,4},{4,4},{2,2},{3,4},{1,1}};
PriorityQueue<int[]> min_heap = new PriorityQueue<>((x, y) -> {
if(x[0] != y[0]) {
return Integer.compare(x[0], y[0]);
}

if(x[1] != y[1]) {
return Integer.compare(x[1], y[1]);
}

return 0;
});
min_heap.addAll(Arrays.asList(events));
while(min_heap.peek() != null) {
System.out.println(Arrays.toString(min_heap.poll()));
}
}

输出:

[1, 1]
[1, 4]
[2, 2]
[3, 4]
[4, 4]

关于Java PriorityQueue Comparator 在特定条件下插入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68857979/

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