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