【问题标题】:Arraylist and InsertionSort ObjectArraylist 和 InsertionSort 对象
【发布时间】:2014-12-08 21:26:42
【问题描述】:

问题

我需要使用 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 字符串。

调用代码:

ArrayList<Klant> klanten = new ArrayList<Klant>();
InsertionSort stringsort = new InsortionSort();
stringsort.insertionSort(klanten);

我做错了什么,我该如何解决?

code insertionSort.classklanten 中的任何地方都是错误

'类型表达式必须是数组但解析为ArrayList

【问题讨论】:

    标签: java arraylist insertion-sort


    【解决方案1】:

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

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

    klanten.set(index, object);
    

    如果你想从列表中的某个位置获取对象,你可以使用:

    klanten.get(index);
    

    编辑:

    compareTo(...) &gt; 1 也是错误的。 compareTo 返回值的唯一意义在于它是否大于、小于或等于零。将其与 1 进行比较不会帮助您进行排序。

    【讨论】:

      【解决方案2】:

      您能否确认您正在导入正确版本的 InsertionSort,而不是导入 Array 的旧类?如果您在stringsort.insertionSort(klaten); 中的insertionSort 上使用IDE 鼠标,您应该会看到它的预期。

      确保所有文件都已保存。

      我还建议让 insertSort 接受一个 List 并将您的列表实例化为:List&lt;Klant&gt; klanten = new ArrayList&lt;Klant&gt;();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-15
        • 2015-09-11
        • 2014-03-20
        • 2019-11-22
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        相关资源
        最近更新 更多