问题
我想在 Klant
的对象上自己实现一个 BinarySearch 方法,我该怎么做?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 protected]");
klanten.add(toevoeging);
最佳答案
使用 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;
}
}
在上面比较
Klant
对象 o1
和 o2
,如果 o1
的排名应该高于 o2
则返回 1,如果它们相同则返回 0,如果 o1
的排名低于 o2
则返回 -1。然后运行二分查找; 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);
在上面请注意
klants
集合需要先排序 ,并且 binarySearch 需要使用与排序列表相同的 Comparator
执行。我希望这有帮助。
进一步阅读;
关于java - ArrayList 二进制搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27375711/