如何使用带有自定义插入排序方法的 ArrayList 比较器
How to use ArrayList comparator with custom insertion sort method
这是一个作业,我不能 post 整个代码,但我确实需要了解我做错了什么。我确定这是一个新手错误。:(
我必须构建一个自定义排序方法,对我的 arraylist 对象的特定属性进行排序。我创建了不同的比较器来处理我想要排序的对象中的不同元素。
*编辑添加了更多代码
排序实用方法(需要参数):
public class CarManage{
private ArrayList <Car> carList; //carList defined
public class Sorts {
public static void sorts(Car[]carList, int size, Comparator <Car> someComparator) //given parameters not allowed to modify
{
//sorts arrayList(carList) objects using an insertion sort algorithm.
}
}
} //end class
我尝试调用排序方法来指定我需要排序的属性,但是它拒绝了第一个参数。
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
}
}
}
我不确定为什么它不接受我的参数?这可能是传递引用错误吗?或者我可能调用了错误的方法?
您需要像这样调用方法:
vncSort.sorts(carList, 2, vnc);
此外,您似乎混淆了数组和 ArrayList。 Car 数组将是 Car[]
。 ArrayList<Car>
是一个 List
,它接受并产生 Car
类型。它被称为 ArrayList
的原因是因为它在内部由数组支持。
这是一个作业,我不能 post 整个代码,但我确实需要了解我做错了什么。我确定这是一个新手错误。:(
我必须构建一个自定义排序方法,对我的 arraylist 对象的特定属性进行排序。我创建了不同的比较器来处理我想要排序的对象中的不同元素。
*编辑添加了更多代码
排序实用方法(需要参数):
public class CarManage{
private ArrayList <Car> carList; //carList defined
public class Sorts {
public static void sorts(Car[]carList, int size, Comparator <Car> someComparator) //given parameters not allowed to modify
{
//sorts arrayList(carList) objects using an insertion sort algorithm.
}
}
} //end class
我尝试调用排序方法来指定我需要排序的属性,但是它拒绝了第一个参数。
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
}
}
}
我不确定为什么它不接受我的参数?这可能是传递引用错误吗?或者我可能调用了错误的方法?
您需要像这样调用方法:
vncSort.sorts(carList, 2, vnc);
此外,您似乎混淆了数组和 ArrayList。 Car 数组将是 Car[]
。 ArrayList<Car>
是一个 List
,它接受并产生 Car
类型。它被称为 ArrayList
的原因是因为它在内部由数组支持。