我希望能够使用indexOf方法返回对象的位置,但只想通过联系人的名称来搜索,有没有办法实现这个功能?
我目前有这个方法:
private static ArrayList<Contacts> contactList = new ArrayList<Contacts>();
public class Contacts {
private String name;
private String number;
public Contacts(String name, String number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public String getNumber() {
return number;
}
public void setName(String name) {
this.name = name;
}
public void setNumber(String number) {
this.number = number;
}
public int findItem(String name) {
return contactList.indexOf(name);
}
n
个项目,最坏情况下你不能比检查所有的n
个更好。如果你可以预处理列表,那么你可以做得更好:如果列表已经排序,你可以在O(log n)
的时间内完成。如果你可以将项目放入名称到项目的HashMap
中,你可以在O(1)
的时间内完成。 - Andy TurnerdescCnt == contactList.size()
,那么contactList.get(descCnt)
将抛出一个IndexOutOfBoundsException
异常。请注意,您可以在 for 循环声明中声明并修改descCnt
:for (int cnt = 0, descCnt = max - 1; cnt <= descCnt; cnt++, descCnt--)
。 - Andy Turner