Я перепробовал все ответы на похожие вопросы, например:
Реализация бинарного поиска с использованием подписи `Collections.binarySearch`
Не можете использовать бинарный поиск с Object Arraylist?
Но ни один из них не работал для меня.
Дело в том, что я хочу сделать binarySearch()
, чтобы найти объект с определенным атрибутом в ArrayList
.
Я использую для этого следующий код:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class SearchingThread extends Thread {
private String search;
private ArrayList<Vehicle> vehicles;
public SearchingThread(String search, ArrayList<Vehicle> vehicles) {
this.search = search;
this.vehicles = vehicles;
}
public void run() {
Comparator<Vehicle> comp = new Comparator<Vehicle>() {
@Override
public int compare(Vehicle o1, Vehicle o2) {
return o1.getModel().compareTo(o2.getModel());
}
};
int index = Collections.binarySearch(vehicles, search, comp);
}
}
Здесь search
- это переменная с model
, которую я хочу найти в ArrayList vehicles
.
Я получаю следующую ошибку:
Метод binarySearch (List, T, Comparator) в типе Collections не применим для аргументов (ArrayList, String, Comparator)
Я не могу его использовать, может кто-нибудь помочь мне понять причину и способ устранения ошибки.
Edit:
Извините, что не опубликовал это раньше, сортировка не является проблемой. Я заранее отсортировал список массивов.