当前位置: 首页 > 知识库问答 >
问题:

如何实现通用比较器?

施永宁
2023-03-14

因此,我尝试将插入排序与必须传入的通用比较器一起使用。我无法更改方法名称。我如何实现一个比较器来传递到insertionSort方法中?我是java和面向对象编程的新手。

该测试只是一个junit测试。

public class SortUtil {


public static <T> void insertionSort(ArrayList<T> dataSet, int left, int right, Comparator<? super T> Comparator)
{

    for(int i = left + 1; i <= right; i++)
    {
        T item = dataSet.get(i);

        int j;
        if (dataSet != null)
        {
        for(j = i - 1; (j >= left) && (Comparator.compare(dataSet.get(j), item)) > 0; j--)
        {
            dataSet.set(j + 1, dataSet.get(j)) ;
        }
        dataSet.set(j + 1, item);
        }
    }

}


public void test() {        
    Comparator<? super T> Comp = null;

    ArrayList<T> temp = (ArrayList<T>) SortUtil.generateBestCase(10);

    SortUtil.insertionSort(temp, 0, temp.size(), Comp);






}

}

共有1个答案

鲍宁
2023-03-14

insertionSort()是通用的。它使用T<代码>测试()不是。它应该使用您想要测试的任何特定类型。在测试()中,您不需要制作比较器

创建自定义比较器

Comparator<Integer> comp = new Comparator<Integer>() {
    public int compare(Integer i1, Integer i2) {
        // Your code here. Check the documentation for how this should behave.
    }
};

 类似资料:
  • 我被给了下面的代码作为家庭作业。我被要求为雇员对象实现比较器。compare方法返回一个int。但是,如果对employee类中的方法进行比较,则没有一个方法返回int。谁能给我一些关于比较方法应该如何工作的指导?谢谢。

  • 我在理解和使用比较器方面有一个问题,有人问我以下问题: 我在一个单独的Employee类中使用compareTo比较器接口来调用比较器对象的重载使用。 任何帮助,建议,代码行将非常感谢!!

  • 我正在使用Java和Scala的twirl模板。所以我试图在模板中对列表进行排序,但我不知道如何覆盖比较器方法。 My List包含类的对象,设计如下: BaseFoo类确实有一个名为 在我的scala旋转模板中,它看起来像: 否在twirl模板中,我正在尝试对其进行排序: 但这似乎无法编译: 需要类类型,但java.util.ArrayList[_

  • 我正在尝试编写一个使用最小优先级队列的算法,所以我在谷歌上四处查看并找到了PriorityQueue。不过,似乎为了使用它,我需要告诉它我希望它如何排列优先级,并且这样做的方法是使用比较器(我想比较我的“Node1”对象的特定数据字段)。更多的谷歌搜索提出了创建一个新的比较器的想法,它实现了比较器但覆盖了比较方法。我正在尝试的是这样(以及它的其他变体): 编译器有几个理由提出抗议,其中之一是我没有

  • 嗨,我是贾维斯的新手。 我有一个实体,我正在为它实现一个自定义比较器,以便使用Javers进行比较。 我的实体:- 包装com.devyansh.entity; 进口java.util.清单; 导入组织。贾维斯。果心元模型。注释。实体 下面我注册了新的比较器:- 我的比较器实现:- 问题领域:- 每当我尝试使用以下行进行比较时:- Diff Diff=标枪。比较(new Ent(“aaa”,new

  • 问题内容: 我试图以递归方式将本地主机中的目录与远程linux机器中的目录进行比较。但是,当我执行下一条命令时: 说这是行不通的: 差异:ssh admin@10.0.0.10:/ home / admin:没有这样的文件或目录 递归比较目录内容的正确方法是什么? 提前致谢 问题答案: 如果不需要区分文件中的详细信息,只需获取目录/文件名的差异,然后尝试以下操作: (注意:需要设置“没有密码的SS