【发布时间】:2024-04-26 23:30:01
【问题描述】:
我已经尝试了相关问题的所有答案,如下所示:
Implement binary search using the `Collections.binarySearch` signature
Can't use binary search with 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 是我想在ArrayList 中搜索model 的变量vehicles。
我收到以下错误:
Collections 类型中的方法 binarySearch(List, T, Comparator) 不适用于参数(ArrayList, String, Comparator)
我无法使用它,谁能帮助我了解错误的原因和解决方案。
编辑:
很抱歉之前没有发布这个,排序不是问题。我已经事先对数组列表进行了相应的排序。
【问题讨论】:
-
仅作记录:您了解二进制搜索的先决条件是您的数组/列表已经排序吗?是这样吗?
-
“我太懒了”如果你懒得做 s/eihcle/ehicle/g,那你就太懒了。
-
@AndyTurner 是的 :)
-
@GhostCat 道歉,请参阅编辑后的问题。
标签: java comparator binary-search