我想在我的方法findContactsByName中使用for-each循環搜索ArrayList中包含的字符串,如果在聯繫人中找到字符串,則聯繫人被返回,如果沒有找到字符串,則返回null。然而,當測試我的代碼null一直返回,這裏是我的代碼:使用字符串作爲參數對ArrayList進行線性搜索
import java.util.*;
public class Phonebook {
private String owner;
private ArrayList<Contact> contacts = new ArrayList<Contact>();
public void addContact(Contact contact) {
contacts.add(contact);
}
public void show() {
System.out.println(owner + "'s phonebook");
for (Contact contact : contacts) {
System.out.println(contact);
}
}
public Contact findContactByName(String name) {
for (Contact contact : contacts) {
if (contacts.contains(name)) {
return contact;
}
}
return null;
}
}
嘗試遵循以下命名約定:一個名爲Contact的Contact接口很容易混淆。變量名稱應該是'contact'。 –
考慮使用一個''HashMap''而不是迭代通過ArrayList自己 –
在你的增強型for循環do(Contact contact:contacts)中代替,它更容易閱讀,同時也是一個適當的實現,不使用類的名稱作爲該變量的名稱.. – Javant