Java 如何将ArrayList comparator与自定义插入排序方法结合使用
这是一个作业,我不能发布全部代码,但我真的需要理解我做错了什么。我敢肯定这是新手犯的错误( 我必须构造一个自定义排序方法,对arraylist对象的特定属性进行排序。我已经创建了不同的比较器来处理我想要排序的对象中的不同元素 *编辑添加了更多代码 排序实用程序方法(所需参数):Java 如何将ArrayList comparator与自定义插入排序方法结合使用,java,sorting,arraylist,comparator,Java,Sorting,Arraylist,Comparator,这是一个作业,我不能发布全部代码,但我真的需要理解我做错了什么。我敢肯定这是新手犯的错误( 我必须构造一个自定义排序方法,对arraylist对象的特定属性进行排序。我已经创建了不同的比较器来处理我想要排序的对象中的不同元素 *编辑添加了更多代码 排序实用程序方法(所需参数): 公共类CARMAGE{ private ArrayList carList;//定义了carList 公共类分类{ public static void sorts(Car[]carList,int size,Compa
公共类CARMAGE{
private ArrayList carList;//定义了carList
公共类分类{
public static void sorts(Car[]carList,int size,Comparator someComparator)//不允许修改给定参数
{
//使用插入排序算法对arrayList(carList)对象进行排序。
}
}
}//结束类
我尝试调用sort方法,以指定需要排序的属性,但遗憾的是,它拒绝了第一个参数
public void sortByVinNumber(){
VinNumComparator vnc = new VinNumComparator();//one of many comparators
Sorts vncSort = new Sorts();
for(int i = 0; i < carList.size(); i++){
if(vnc.compare(carList.get(i-1), carList.get(i)) > 0){
vncSort.sorts(Car[]carList, 2, vnc);//not working here rejects first parameter
///vncSort.sorts(carList,2,vnc)///doesn't work
}
}
}
public void sortByVinNumber(){
VinNumComparator vnc=新的VinNumComparator();//许多比较器中的一个
排序vncSort=新排序();
对于(int i=0;i0{
排序(Car[]carList,2,vnc);//不在这里工作会拒绝第一个参数
///排序(carList,2,vnc)///不起作用
}
}
}
我不确定它为什么不接受我的参数?可能是传递引用错误吗?或者我可能调用了错误的方法吗?您需要这样调用该方法:
vncSort.sorts(carList, 2, vnc);
另外,你似乎把数组和数组列表混淆了。Car数组应该是
Car[]
。ArrayList
是一个列表,它接受并生成Car
类型。之所以称为ArrayList
,是因为它由数组内部支持。不要放置Car[]
在参数列表的前面carList
中。您仅在声明变量时对变量执行此操作我已经尝试过了。然后整个排序方法被拒绝,并给出错误“类型排序中的方法排序(Car[],int,Comparator)不适用于参数(ArrayList,int,vinumberComparator)”您在何处定义carList
?向我们显示该行。该方法需要的是ArrayList
而不是数组。如何使用Comparable
接口实现您的Car类,并声明compareTo(Car-anotherCar)的覆盖方法
?在compareTo中,您可以声明自己比较汽车实例的逻辑。然后您可以使用简单的集合。排序(carArrayList)
@C.T否,当您调用排序时,不要在carList
之前键入汽车[]
。只有在声明对象时才这样做
vncSort.sorts(carList, 2, vnc);