问题
我想自己在 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@email.com");
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
应该被排名则返回 1高于 o2
,如果相同则返回 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 BinarySearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27375711/