Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将ArrayList comparator与自定义插入排序方法结合使用_Java_Sorting_Arraylist_Comparator - Fatal编程技术网

Java 如何将ArrayList comparator与自定义插入排序方法结合使用

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

这是一个作业,我不能发布全部代码,但我真的需要理解我做错了什么。我敢肯定这是新手犯的错误(

我必须构造一个自定义排序方法,对arraylist对象的特定属性进行排序。我已经创建了不同的比较器来处理我想要排序的对象中的不同元素

*编辑添加了更多代码

排序实用程序方法(所需参数):

公共类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);