java - 实现 Java Comparator 的问题 - 泛型

标签 java generics initialization implementation comparator

因此,当我想调用 Comparator 引起的 mergeSort() 方法时,我的主类出现了问题。我收到以下消息:

Image of the error message

我不知道如何解决这个问题..请帮助我!

注意事项: 不要奇怪代码中没有发生任何事情。我被卡住了,因为由于上述问题,我无法证明我的代码的功能:(

(抱歉我的英语不好)

class Algorithms
{
    public static <T> void mergeSort(final T[] a, final Comparator<T> c)
    {
        T[] list = a;
        Comparator<T> comp = c;
    }
}


public class Main
{
    public static void main(String[] args)
    {
        int[] unsortedList = {4,5,7,1,98,32}; //Expected = 1,4,5,7,32,98

        Comparator<Integer> sorted = Comparator.naturalOrder();
        int[] sortedList = Algorithms.mergeSort(unsortedList,sorted))
    }
}

最佳答案

在此代码中,Algorithms.mergeSort 中的类型不匹配调用:

int[] unsortedList = {4,5,7,1,98,32}; //Expected = 1,4,5,7,32,98

Comparator<Integer> sorted = Comparator.naturalOrder();
Algorithms.mergeSort(unsortedList, sorted))

unsortedList 的类型是int[]sorted 的类型是Comparator<Integer> .要使类型匹配,您需要使用 Integer[]作为 unsortedList 的类型:

Integer[] unsortedList = {4, 5, 7, 1, 98, 32}; //Expected = 1,4,5,7,32,98

另一个问题是Algorithms.mergeSort返回 void ,所以这仍然无法编译:

int[] sortedList = Algorithms.mergeSort(unsortedList, sorted);

您需要放弃作业:

Algorithms.mergeSort(unsortedList, sorted);

将它们放在一起,这将起作用(在您实现 Algorithms.mergeSort 之后):

public static void main(String[] args) {
    Integer[] unsortedList = {4, 5, 7, 1, 98, 32};

    Comparator<Integer> sorted = Comparator.naturalOrder();
    Algorithms.mergeSort(unsortedList, sorted);
}

关于java - 实现 Java Comparator 的问题 - 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511144/

相关文章:

java - 使用 Java 和 MongoDB 创建 'contains' 查询

java - 用户身份验证和用户帐户 - 基本编程技术

Java - Azure Application Insights 动态跟踪不适用于 docker 镜像

java - Java 泛型类型与旧式泛型的性能差异?

javascript - 从初始化定位节点

Python:变量的新实例未在类的新实例中创建

java - 模式匹配java : does not work

java - 实现java接口(interface)时保证 "Object o"参数是同一个泛型类型

java - Java 通配符泛型 <?> 的 .NET 等效项具有协方差和逆方差?

swift - 为什么字面值比初始值设定项产生更高效的代码?