因此,当我想调用 Comparator 引起的 mergeSort() 方法时,我的主类出现了问题。我收到以下消息:
我不知道如何解决这个问题..请帮助我!
注意事项: 不要奇怪代码中没有发生任何事情。我被卡住了,因为由于上述问题,我无法证明我的代码的功能:(
(抱歉我的英语不好)
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/