0

简而言之,这是我的两难境地:我导入了一个文件,其中包含给定年份的前 2000 个名称,格式如下:

Mary, F, 2038 
Anna, F, 4230

(姓名,性别,在这一特定年份有多少人被命名)。

我已经用这些数据创建了一个数组(类型字符串)。现在,我必须做的是让用户搜索一个名字,并返回他们最好的年份。例如:搜索“山姆”

输出应该是:

"isamar 1990"
"rosamond 1910"
"sam 1900"
"samantha 1990"
"samara 2000"

程序远不止这些,但我只需要知道如何在数组中搜索,返回我在数组中找到的内容,就完成了。

4

1 回答 1

5

搜索数组可以像迭代它并将每个元素与所需术语进行比较一样简单。例如,假设您有以下模型:

public class CommonName {
  public final String name;
  public final int year;
  public final CommonName(String name, int year) {
    this.name = name;
    this.year = year;
  }
}

假设您已经将文件作为这些对象的数组加载,那么您可以使用以下方法loadedNames搜索它们:String#indexOf(String)

public static CommonName[] loadedNames = /* ... */;
public static Collection<CommonName> search(String searchTerm) {
  Collection<CommonName> matches = new ArrayList<CommonName>();
  for (CommonName cn : loadedNames) {
    if (cn.name.indexOf(searchTerm) >= 0) { matches.add(cn); }
  }
  return matches;
}

当然,O(n)您可能需要解决其他问题,例如区分大小写和性能(数组搜索是)。

于 2012-04-23T21:11:20.090 回答