我正在实现插入排序方法。这是我的代码要求。
我的问题是:调用main方法时,比较器参数c使用什么?
到目前为止,我有一些未实现的方法(merge sort an 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] + " ");
}
}
}
我环顾了一下堆栈溢出,并在比较器界面上搜索了很多,但我真的找不到任何需要将通用比较器作为参数传递的方法。有人能帮我告诉我我不理解的地方或指导我正确的方向。
比较器是一个无法实例化的接口。您需要实现它。有两种方法可以实现:
您需要为整数
元素实现它们。像这样:
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 );
说明:比较器是一个接口,因此无法实例化。您需要实现它。您有一个要排序的整数元素数组,因此可以实现一个整数比较器。compare方法返回int值的减法。如果a
在这里和这里阅读更多。
我是一名自学型开发人员,现在正在学习Java。我了解到,要对函数接口使用方法引用,我们引用的方法的签名必须与该函数接口内抽象方法的签名匹配。 但是在学习比较器时,发现“Comparator.comparing()”方法接受函数接口并返回一个比较器。我知道函数接口的抽象方法必须接受一个参数并返回一个值。 但是我可以将任何部分(而不是完全)匹配Function接口签名的方法(作为方法参考)传递给比较器
我看到了这篇关于用lambdas颠倒顺序的文章,但有一件事甚至让我对传统的比较器实现(或匿名内部类)感到困惑:为什么将第二个参数与第一个参数进行比较会颠倒顺序?
我有一个客户对象类,它有一些变量,并且已经实现了一个关于其中一个变量的比较器。然而,我需要为不同的变量last_name实现另一个比较器。 因为我的Customer类中不能有2个compareTo()方法,所以我决定在这里专门创建一个Comparing类 但一旦触及Collections.sort(客户); 它不会激活下面的公共int比较(Customer Customer_1,Customerc
我正在做一个关于java类的介绍的作业,该作业要求使用方法将温度从摄氏转换为华氏,反之亦然。它需要使用三种比较方法,而我无法弄清楚该把什么放进去。以下是说明: 三种比较方法: -此方法将另一个温度作为参数,如果调用对象具有与other相同的温度,则返回true,否则返回false。注意,摄氏温度可以等于华氏温度,如上式所示。 -如果调用对象的温度低于其他温度,则此方法将返回true,否则返回fal
我在这个上面有点卡住了。我正在编写一个包含两个类的java程序,然后是一个测试程序来测试类中的方法。我被困在主方法中调用下面的两个方法上。所有的类文件(测试程序类和另外两个类)都在编译,IDE没有给我任何错误消息,计算只是没有发生…… --主要方法代码: -账户类别代码: 注意:平衡设置器正在工作,因为它在测试程序的前面被调用... 非常感谢任何帮助!!! 账户类别的完整代码: 主要方法完整代码:
我有一个关于compareTo函数如何帮助比较器排序的问题,即o1。比较(o2)与o2。比较(o1) 如果两个字符串相等,则此方法返回0,否则返回正值或负值。如果第一个字符串在词典上大于第二个字符串,则结果为正,否则结果为负。 上面的陈述很简单,但是为什么o1.compare(o2)会给我一个升序,而o2.compare(o1)给了我一个降序? 如果我有整数值“5,10,3”,我得到3,5,10和