gpt4 book ai didi

java - ArrayList BinarySearch

转载 作者:行者123 更新时间:2023-12-03 22:11:19 25 4
gpt4 key购买 nike

问题

我想自己在 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 对象 o1o2 并且如果 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/

25 4 0