问题
我需要使用Insertionsort对元素(Achternaam)上的<klant>
的ArrayList进行排序。
我该怎么做?
代码
我使用插入排序的代码给了我一些错误,因为我使用的是Arraylist而不是1000的数组示例。
public class InsertionSort {
public static void insertionSort(ArrayList<Klant> klanten){
for(int i = 1; i <klanten.size(); i++){
Comparable objectToSort = klanten.get(i);
int j = i;
while(j > 0 && klanten[j-1].compareTo(objectToSort) > 1){
klanten[j] = klanten[j-1];
j--;
}
klanten[j] = objectToSort;
}
}
}
Klant.class有几个getter和setter返回其变量,其中一个是getAchternaam()
,返回achternaam String。
调用代码:
ArrayList<Klant> klanten = new ArrayList<Klant>();
InsertionSort stringsort = new InsortionSort();
stringsort.insertionSort(klanten);
我做错了什么,我该如何解决?
code insertionSort.class
klanten
处的任何地方都是错误
'类型表达式必须是数组,但它已解析为ArrayList &LT; klant&GT;
答案 0 :(得分:1)
使用数组,您可以使用[]
运算符检查和分配元素。使用List
,您需要使用get
和set
方法。
因此,如果要将对象分配给列表中的某个位置,请使用:
klanten.set(index, object);
如果您想从列表中的某个位置获取对象,请使用:
klanten.get(index);
编辑:
compareTo(...) > 1
也是错误的。 compareTo
返回值的唯一重要性是它是否大于,小于或等于零。将它与1进行比较无助于您的排序。
答案 1 :(得分:0)
您能否确认导入的是正确版本的InsertionSort而不是导入阵列的旧类?如果您在insertionSort
中使用IDE鼠标而不是stringsort.insertionSort(klaten);
,那么您应该会看到它的期望。
确保保存所有文件。
另外,我建议将insertSort置于列表中并将列表实例化为:List<Klant> klanten = new ArrayList<Klant>();