搜索数组并返回其中的元素

时间:2014-03-20 19:05:05

标签: java arrays search interface

我有一个名为theDirectory的数组,它包含许多DirectoryEntry,每个都包含一个名称和一个telno。 我正在努力的任务是在一个单独的ArrayPhoneDirectory文件中创建一个方法,名为lookUpEntry,它接受参数(String name),并搜索数组,找到包含该名称的DirectoryEntry,然后返回与之关联的telno它,使用DirectoryEntry.java中声明的getNumber方法。

    public class DirectoryEntry {
    String name;
    String telno;

    public DirectoryEntry(String name, String telno)
    {
        this.name = name;
        this.telno = telno;

    }

    public String getName()
    {
        return name;
    }

    public String getNumber()
    {
        return telno;
    }

    public void setNumber(String telno)
    {
        this.telno = telno;
    }

    public String toString()
    {
        return getClass().getName() + " Name: " + this.name +
                " Number: " + this.telno;
    }

    public String format()
    {
        return String.format("%-20s %-20s", name, telno);
    }

}

这是我到目前为止所做的,但是我认为我可能会走错路,所以任何帮助都会受到高度赞赏。

public String lookUpEntry(String name)
{
    if (Arrays.asList(theDirectory).contains(name))
    {
        return theDirectory.getNumber;
    }

    else
    {
        return null;
    }

}

感谢。

4 个答案:

答案 0 :(得分:0)

为什么你需要一个数组.. ??使用HashMap存储名称和数字对象,如

Map<String, String> entries = new HashMap<>();
entries.put("contact1", "121212");
entries.put("contact2", "22222");

当您需要搜索联系人时,请使用方法

entries.get("contact2")

答案 1 :(得分:0)

您是否需要将它们放在两个不同的类中。将它们保持在一起会稍微容易些。 否则,我不会真正看到您的代码存在问题,除非我没有看到数组的位置或您引用其他类的位置。 但是你走的是正确的道路。不是最优化的方式,但它会def。工作。 通过编码,总有很多方法可以做。没有一个正确的方法。

答案 2 :(得分:0)

试试这个,

public String lookUpEntry(String name)
{
            List<DirectoryEntry> dirList=Arrays.asList(theDirectory);
            int i=0;
            for( i=0;i<dirList.size();i++){
                if(dirList.get(i).getName().equals(name)){
                    return dirList.get(i).getNumber;
                }
            }

      return null;
}

答案 3 :(得分:0)

这是一个更简单(更高效*)的版本。

public String lookUpEntry(String name){
    for(DirectoryEntry e : theDirectory)
      if(e.getName().equals(name))
        return e.getNumber();
    return null;  //Could not find name
}

*在我看来,在阵列上使用for each循环更快,也更容易阅读。