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 に答える