Java BinarySearch给出了一个错误类型;集合不适用于参数“;

Java BinarySearch给出了一个错误类型;集合不适用于参数“;,java,collections,binary-search,Java,Collections,Binary Search,我是java新手,在Collections.binarySearch中遇到了一个问题,我已经阅读了javadoc并在这里检查了很多答案,但仍然在处理一个问题。在实际代码之前,有一个背景: 我正在编写一个代码,允许用户管理联系人簿。 这是我的联络班 public class Contact implements Comparable<Contact> { private String name; private String email; private String phone;

我是java新手,在Collections.binarySearch中遇到了一个问题,我已经阅读了javadoc并在这里检查了很多答案,但仍然在处理一个问题。在实际代码之前,有一个背景: 我正在编写一个代码,允许用户管理联系人簿。 这是我的联络班

public class Contact implements Comparable<Contact>  {
private String name;
private String email;
private String phone;
private String address;
也在类内部,我为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;
}
现在我的问题是,我试图在搜索方法中使用二进制搜索,如下所示:

public int ContactIndex(final String name){
    return Collections.binarySearch(contacts, name, new ContactComparator());  
}
但它给了我一个错误:

类型集合中的方法binarySearch(List、T、Comparator)不适用于参数(ArrayList、String、ContactComparator)


我再次需要你们的帮助,伙计们,谢谢你们所有的帮助者

您应该发送一个
联系人
作为参数,该参数包含要搜索的所需联系人的
姓名
,而不是只发送
字符串
。请注意,您的
ContactComparator
比较
联系人
s而不是
联系人
字符串

代码如下所示:

public int ContactIndex(final String name) {
    Contact contactToSearch = new Contact();
    contactToSearch.setName(name);
    return Collections.binarySearch(contacts, contactToSearch, new ContactComparator());  
}
方法签名是

public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
publicstaticintbinarysearch(列表
public int ContactIndex(final String name) {
    Contact contactToSearch = new Contact();
    contactToSearch.setName(name);
    return Collections.binarySearch(contacts, contactToSearch, new ContactComparator());  
}
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)