在主方法中调用Comparator参数

喜欢

我正在实现插入排序方法。这是我的代码的要求。

  1. 方法insertSort是不返回任何内容的静态方法。
  2. 它有两个参数:通用数组和比较器(通用)。
  3. 它使用合并排序算法对通用数组进行排序

我的问题是:在主方法中调用时,对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] + " ");
        }
    }
}

我在堆栈溢出中四处张望,并且在Comparator接口上用Google搜索了很多,但是我真的找不到任何需要将通用比较器作为参数传递的方法。有人可以帮助我说出我不了解的内容或将我引导到正确的方向。

拉霍斯·阿帕德(Lajos Arpad)

Comparatorinterface,无法实例化。您需要实现它。有两种实现方法:

  • compare
  • equals

您需要为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);
    }

}

并在您中这样main称呼它:

insertionSort(a, new IntegerComparator );

说明:Comparatorinterface,因此无法实例化。您需要实现它。您有一个Integer要排序元素数组,因此可以实现一个Integer Comparatorcompare方法返回int值的减法。如果a <b,则为负。如果a == b,则为0。如果a> b,则为正。

在这里这里阅读更多

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章