【发布时间】:2014-05-29 23:10:17
【问题描述】:
我是 java 新手,遇到了 Collections.binarySearch 的问题,我已经阅读了 javadoc 并在这里检查了很多答案,但仍然在处理一个问题。在实际代码之前,背景: 我正在编写一个让用户管理通讯录的代码。 这是我的联系人课程
public class Contact implements Comparable<Contact> {
private String name;
private String email;
private String phone;
private String address;
我有一个比较器
public int compareTo(Contact contact) {
return name.compareToIgnoreCase(contact.getName());
}
也在课堂内,我为 copmare 本身设置了一个不同的类
public class ContactComparator implements Comparator<Contact> {
@Override
public int compare(Contact first, Contact second) {
String one = first.getName();
String two = second.getName();
int f = one.compareToIgnoreCase(two);
return f;
}
}
在代码中我一直在对我的列表进行排序,就像这里有人帮助过我一样
Collections.sort(contacts , new ContactComparator())
现在我的问题是我试图在搜索方法中使用二进制搜索,如下所示:
public int ContactIndex(final String name){
return Collections.binarySearch(contacts, name, new ContactComparator());
}
但它给了我这个错误:
Collections 类型中的方法 binarySearch(List, T, Comparator) 不适用于参数(ArrayList, String, ContactComparator)
我又需要你们的帮助了,谢谢大家!!!
【问题讨论】:
标签: java collections binary-search