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)
当您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 .
我希望这有帮助.
进一步阅读;
| 归档时间: |
|
| 查看次数: |
13702 次 |
| 最近记录: |