Arraylist和InsertionSort对象

时间:2014-12-08 21:26:42

标签: java arraylist insertion-sort

问题

我需要使用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;

2 个答案:

答案 0 :(得分:1)

使用数组,您可以使用[]运算符检查和分配元素。使用List,您需要使用getset方法。

因此,如果要将对象分配给列表中的某个位置,请使用:

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>();