如何使用 Java 中的 PriorityQueue<int[]> 3 值进行排序?

How to sort with PriorityQueue<int[]> 3-values in Java?

我正在尝试使用 PriorityQueueComparator 进行排序,但我不知道如何编写方法..

如果第三个元素相同,我想将它与第一个元素进行比较。如果第一个元素也相同,我想将它与第二个元素进行比较

我试着用比较方法写:

if(o1[2]<o2[2])
 return 1;
else if(o1[2]>o2[2])
 return -1;
return 0;

但不工作..请帮我...

Queue<int[]> q = new PriorityQueue<int[]>(new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return 0;
    }
});

q.add(new int[] {2, 2, 2});
q.add(new int[] {2, 4, 2});
q.add(new int[] {3, 3, 2});
q.add(new int[] {3, 1, 2});
q.add(new int[] {2, 7, 1});
q.add(new int[] {4, 7, 1});

我想获取队列数据

2 7 1

4 7 1

2 2 2

2 4 2

3 1 2

3 3 2

使用数组的不同部分进行比较。如果你得到不同,return 它,它允许排序。如果没有区别,请使用另一个数组索引进行另一次比较。因此,对于第三 -> 第一 -> 第二,使用索引 2、0 然后 1。

    public int compare(int[] o1, int[] o2) {
        int out = compareUsingIndex (2, o1, o2);
        if (out !=0){
            return out;
        }
        out = compareUsingIndex (0, o1, o2);
        if (out !=0){
            return out;
        }
        return compareUsingIndex (1, o1, o2);
    }
    
    private int compareUsingIndex(int index, int[] o1, int[] o2){
        if (o1[index]==o2[index]){
           return 0;
         }
        else if (o1[index]>o2[index]){
           return 1;
         }
        return -1;
    }