gpt4 book ai didi

java - 使用字符串作为参数对 ArrayList 进行线性搜索

转载 作者:行者123 更新时间:2023-12-01 18:03:36 24 4
gpt4 key购买 nike

我正在尝试使用 for-each 循环在我的方法 findContactsByName 中搜索 ArrayList 中包含的字符串,如果在联系人中找到该字符串,则返回该联系人,如果未找到该字符串,则返回 null被返回。但是,当测试我的代码时,总是返回 null,这是我的代码:

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;
}
}

最佳答案

您的 findContactByName 方法不正确。您正在循环遍历 ArrayList,但每个循环都使用 ArrayList.contains 检查数组列表。 ,它将列表本身中的对象与 name 进行比较.

正确的做法是:

public Contact findContactByName(String name) {
for (Contact contact : contacts) {
if (contact.getName().equals(name)) {
return contact;
}
}
return null;
}

假设Contact对象有一个名为 getName 的方法。注意我在每个循环中如何使用 contact来自 for 循环 for (Contact contact : contacts)而不是 ArrayList 本身。

关于java - 使用字符串作为参数对 ArrayList 进行线性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38661197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com