ArrayList BinarySearch

use*_*459 2 java binary-search

我想在Object上实现一个BinarySearch方法,我该Klant怎么做? Klant有一些变数.

public class Klant {
public String klantID;
private String voornaam;
private String tussenvoegsel;
private String achternaam;
private int leeftijd;
private static boolean MAN = true;
private String plaats;
private String email;
/*
 *  Getters and setters included 
 */
}

Klant toevoeging = new Klant("FirstName", "middleName", "\Lastname\"", 20, false, "Location", "email@email.com");
klanten.add(toevoeging);
Run Code Online (Sandbox Code Playgroud)

Rud*_*haw 5

使用Collections.binarySearch(...)

当您Collections.binarySearch(...);在列表上运行时,该列表中的对象必须是implement Comparable,否则您必须将Comparator传递给该binarySearch(...)方法;

以比较器为例,您可以执行以下操作;

class KlantComparator implements Comparator<Klant> {
    @Override
    public int compare(Klant o1, Klant o2) {
        if(condition)
          return 1;
        else if(condition2)
          return 0;
        else 
          return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面你比较Klant对象o1,o2如果o1排名高于o2,则返回1 ,如果它们相同则返回0,如果o1排名低于,则返回-1 o2.然后运行二进制搜索;

    KlantComparator kc = new KlantComparator();
    ArrayList klants = new ArrayList<Klant>();
    Klant o = new Klant();
    klants.add(o);
    klants.add(new Klant());
    klants.add(new Klant());
    Collections.sort(klants, kc);
    Collections.binarySearch(klants, o, kc);
Run Code Online (Sandbox Code Playgroud)

在上面请注意,需要首先klants集合进行排序,并且需要使用Comparator对列表进行排序的binarySearch执行binarySearch .

我希望这有帮助.

进一步阅读;