您所需要的只是爲User
類實現Comparable接口。然後,您可以使用Collections.binarySearch()
方法(僅當您的列表按課程排序時)。
類似的東西會爲你工作:
public static void main(String[] args) {
List <User> list = new ArrayList<>();
list.add(new User("A1", "B1", "Name1"));
list.add(new User("A2", "B2", "Name2"));
list.add(new User("A3", "B3", "Name3"));
list.add(new User("A4", "B4", "Name4"));
list.add(new User("A5", "B5", "Name5"));
System.out.println(list.get(Collections.binarySearch(list, new User("A4", "B4", "Name4"))));
}
static class User implements Comparable <User>{
String territory;
String company;
String name;
public User(String territory, String company, String name) {
this.territory = territory;
this.company = company;
this.name = name;
}
@Override
public int compareTo(User o) {
return (territory+company).compareTo(o.territory+o.company);
}
@Override
public String toString(){
return territory + "," + company + "," + name;
}
}
告訴我們您已經嘗試的.. –
的可能的複製[實施對象二進制搜索(http://stackoverflow.com/questions/901944/實現二進制搜索對象) – ar4ers
@AnoopLL我試過了Collections.binarySearch。但是這需要創建一個虛擬對象。我不想那樣。 – Vivek