可比较<Integer>数组比较 java



我的任务是在java中编写归并排序,任务还指定我不能使用整数,我必须使用可比整数。这是我第一次使用java。我的问题是比较合并函数内的两个compint数组中的元素。我试过if (list[i].compareTo(list2[j]),但compareTo只能取整数。如有任何帮助,不胜感激

public static Comparable<Integer>[] merge(Comparable<Integer> list[], Comparable<Integer> list2[] ) {
Comparable<Integer> C[];
int i = 0; int j = 0; int k = 0;
while (i < list.length && j < list2.length) {
if (list[i] < list2[j]]) {
C[k] = list[i];
i++; k++;
} else {
C[k] = list2[j];
j++; k++;
}
}
while (i < list.length) {
C[k++] = list[i++];
}
while (j < list2.length) {
C[k++] = list2[j++];
}
return C;
}

只要Integer就是你想要的。它Comparable<Integer>(尝试一下:Comparable<Integer> i = Integer.valueOf(10);工作得很好!)-Comparable<Integer>可以比较2个整数实例。它不能比较2个Comparable<Integer>实例。

在你的代码中,每一个你写Comparable<Integer>的地方都应该是Integer

你应该这样做。

public static Integer [] merge(Integer[] list, Integer[]list2 ) {
Integer[] C = new Integer[list.length + list2.length];
int i = 0; int j = 0; int k = 0;
while (i < list.length && j < list2.length) {
if (list[i].compareTo(list2[j]) < 0) {
C[k] = list[i];
i++; k++;
} else {
C[k] = list2[j];
j++; k++;
}
}
while (i < list.length) {
C[k++] = list[i++];
}
while (j < list2.length) {
C[k++] = list2[j++];
}
return C;
}

应该使用Comparable<Integer>来测试数组元素(与常见的<, == , and >操作符相反)。由于Integer类实现了Comparable<T>接口,您可以通过执行以下操作来完成任务:

list[i].compareTo(list2[j] < 0)而非list[i] < list2[j]

其他都说不通。特别是传递两个已经指出的Comparable<Integer>数组。如果这不是你的理解,那么你应该和你的老师讨论。

相关内容

  • 没有找到相关文章

最新更新