クラスプロジェクトでは、1つのテキストファイルに含まれる10,514曲のタイトル、アーティスト、歌詞を読み上げます。プロジェクトの現在のセクションでは、順序付けられたアンロールリンクリストを作成し、タイトルフィールドで検索を実行しました。コンパレータは、リストをタイトルでソートするようにも作成されています。一致するものを見つけるために必要な比較を追跡する必要があります
テストすると、奇妙な結果が得られます。たとえば、
天使の検索を実行すると、23の一致が返され、552の比較が必要になります。これは、教授によって与えられた回答と一致します
。tはゼロの一致を返し、9530の比較が必要です。ここで、1148の一致は62の一致を返し、8455の比較を必要とします。sは一致
を返しません。と8383の比較が必要でしたsaは89の一致を返し、7355の比較が必要でした
私の検索アルゴリズムは次のように実行されます。
- リストをループして最初の一致を見つけます
- リストをループして、検索フィールドに一致しない最初のインスタンスを見つけます
- 開始オブジェクトと終了オブジェクトをデータ構造のSublistメソッドに送信します。このメソッドは、これら2つのオブジェクトをループして、一致の個別のリストを作成します。
- 一致のリストを返す
ステップ1と2の両方で、現在の値を次の方法で検索値と比較します。
if (currentSong.getTitle().toLowerCase().startsWith(titleSearch))
1文字の検索でfalseを返すこのコード行についてはどうでしょうか。ただし、aを追加すると、値が見つかりますか?できれば、デバッガーでループの8000回の反復を手動で実行する必要がないソリューションが必要です。さらに、教授は期待値を使用して構造にテストを提供し、私のコードはすべてのテストに合格しました。