当前位置: 首页 > 知识库问答 >
问题:

Java错误:Comparator不是抽象的,并且不重写Comparator[重复]中的抽象方法compare(Object,Object)

闽焕
2023-03-14

我有一个排序。java文件,具有以下结构:

public class Sorting {
    public static <T> void mergeSort(T[] arr, Comparator<T> comparator) {
    (...)
    }
}

我的目标是在一个单独的Driver.java文件中测试mergeSort()方法。

为此,我在驱动程序文件中包含了以下内容:

import java.util.Comparator;
import java.io.*;
import java.util.*;

public class Driver {
    public static void main(String[] args) {
        int[] testMergeSort1 = { 9, 13, 5, 6, 12, 10, 3, 7, 2, 8, 0, 15, 1, 4, 14, 11 };
        mergeSort(testMergeSort1, IntegerComparator);
        System.out.println(Arrays.toString(testMergeSort1));
    }
}

并且,根据这个类似问题的公认答案,我将下面的整数比较器实现添加到同一驱动程序中。java文件:

public class IntegerComparator implements Comparator {
    public int compare(Integer a, Integer b) {
        return a.intValue() - b.intValue();
    }

    public int equals(Object obj) {
        return this.equals(obj);
    }
}

但是,当我编译Driver.java时,我得到以下错误:

Driver.java:33: error: Driver.IntegerComparator is not abstract and does not override abstract method compare(Object,Object) in Comparator
    public class IntegerComparator implements Comparator {
           ^
Driver.java:38: error: equals(Object) in Driver.IntegerComparator cannot implement equals(Object) in Comparator
        public int equals(Object obj) {
                   ^
  return type int is not compatible with boolean

有关如何从排序中继续测试mergeSort()方法的任何指导。单独的驱动程序中的java文件。java文件将不胜感激。

共有1个答案

牟稳
2023-03-14

尝试实现通用比较器

public class IntegerComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer a, Integer b) {
        return a.intValue() - b.intValue();
    }
}

 类似资料: