Arraylist и InsertionSort Object

Вопрос

Мне нужно использовать I nsertionsort для сортировки моего ArrayList <klant> на элементе (Ахтернаам). Как я могу это сделать?

Код

Код, который я использую для сортировки вставками, дает мне несколько ошибок, потому что я использую Arraylist вместо тысяч примеров с массивами.

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 имеет несколько методов получения и установки, которые возвращают свои переменные, одним из которых является getAchternaam() который возвращает строку ахтернаам.

вызывая код:

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

Что я делаю не так и как я могу это исправить?

Везде в code insertionSort.class в klanten это ошибка

'Выражение типа должно быть массивом, но оно разрешается в ArrayList

2 ответа

Решение

С массивом вы можете исследовать и назначать элементы, используя [] оператор. С List вам нужно использовать get а также set методы.

Итак, где вы хотите назначить объект на позицию в списке, вы используете:

klanten.set(index, object);

и где вы хотите получить объект с позиции в списке, вы используете:

klanten.get(index);

Редактировать:

Также compareTo(...) > 1 неправильно. Единственное значение compareTo Возвращаемое значение - если оно больше, меньше или равно нулю. Сравнение с 1 не поможет вашей сортировке.

Можете ли вы подтвердить, что вы импортируете правильную версию InsertionSort вместо старого класса, который принимал массив? Если вы используете мышь над IDE insertionSort в stringsort.insertionSort(klaten); и вы должны увидеть, что он ожидает.

Убедитесь, что все ваши файлы сохранены.

Также я рекомендую сделать inserttionSort, взять список и создать его как: List<Klant> klanten = new ArrayList<Klant>();

Другие вопросы по тегам