如何使用ArrayList在寄存器中查找名称

时间:2012-04-29 22:32:05

标签: java arraylist

我目前正在处理以下问题:

  

假设类名称具有存储为字符串的属性“surname”和“firstname”。让“注册”成为具有声明的姓名列表:

ArrayList<Name> regist = new ArrayList<Name>();
     

假设填充了“regist”,请实现下面的方法,该方法在列表中找到具有给定姓氏的名称,否则返回null   匹配名称存在于列表中。 (您可以编写Java代码或混合使用   Java和伪代码)。

public Name find(String surname)
{
  //... to do ...
}

到目前为止我能得到的答案是:

public Name find (String surname)
{
  this.surname = surname;
  return null;
}


public Name()
{
  surname = " ";
}

在那之后,我被困在这里,如果有人能告诉我如何完成这段代码,那么你的帮助将会得到真正的赞赏,提前谢谢。

(如果我能够正确完成它,我将能够正确测试此代码。)

4 个答案:

答案 0 :(得分:2)

您必须循环regList中的项目并返回具有给定姓氏的Name对象。您当前的查找代码不正确 - find方法不在名称类中,并且(或者不应该)允许直接更改Name对象中的变量。

无论如何,解决方案是:

public Name find(String surname)
{
    for(Name obj : regList)
    {
       // Check the object's surname with the given one
       // Should check if obj is null
       // Must use .equals to compare strings.
       if(obj.surname.equals(surname))
           return obj;
    }

    // Not found
    return null;
}

答案 1 :(得分:1)

您需要循环注册并测试姓氏是否与参数匹配...如果循环退出而未找到匹配,则返回null。

答案 2 :(得分:1)

你的意思是:

public Name find (String surname)
{
    // loop all names in regist
    for(Name n : regist)
    {
        // find the Name object with matching surname
        if(n.getSurname().equals(surname))
        {
            return n;
        }
    }
    return null;
}

答案 3 :(得分:0)

您声明的ArrayList ArrayList<Name> regist = new ArrayList<Name>(); 可能已经有了你想要的确定名称。要找到它,你必须在sudo代码中执行以下操作:

查看注册中存储了多少个名称,然后检查从0位到注册中最后位置的每个名称。如果它是相同的,那么返回第一个和姓氏。请记住,将first和surname添加到注册中,并且只应测试surename并返回first和surename,如果surename正确的话。