dgl*_*dgl 3 java generics mergesort comparator
我正在实现插入排序方法。这是我的代码的要求。
我的问题是:在 main 方法中调用时,我对 Comparator 参数 c 使用什么?
这是我到目前为止所拥有的,我有一些未实现的方法(合并排序和 isAnagaram)忽略那些
public class Sorting
{
public static <T extends Comparable<T>> void insertionSort(T[] a, Comparator<T> c)
{
for (int i = 0; i < a.length; i++)
{
T key = a[i];
int j;
for (j = i - 1; j >= 0; j--)
{
if (c.compare(a[j], key) <= 0)
break;
a[j + 1] = a[j];
}
a[j + 1] = key;
}
}
public static void mergeSort()
{
//TODO
}
public static boolean isAnagram(String first, String second)
{
//TODO
return false;
}
public static void main(String[] args)
{
Integer a[] = { 99, 8, 19, 88, 62, 2, 1, 9, 19 };
// not sure how to pass parameter comparator
insertionSort(a, null );
for (int i = 0; i < a.length; i++)
{
System.out.print(a[i] + " ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我环顾了堆栈溢出,并在 Comparator 接口上搜索了很多,但我真的找不到任何需要将通用比较器作为参数传递的方法。有人可以帮助我说出我不理解的内容或指导我走向正确的方向。
Comparator是interface,无法实例化。你需要实施它。有两种实现方法:
compareequals您需要为Integer元素实现它们。像这样:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在你中main你这样称呼它:
insertionSort(a, new IntegerComparator );
Run Code Online (Sandbox Code Playgroud)
说明:Comparator是一个interface,因此它不能被实例化。你需要实施它。您有一个Integer要排序的元素数组,因此您可以实现一个Integer Comparator. 该compare方法返回 int 值的减法。如果 a < b,那么它是负数。如果 a == b,则为 0。如果 a > b,则为正。
| 归档时间: |
|
| 查看次数: |
8231 次 |
| 最近记录: |