0

Disksタイトル、長さ、アーティストなど、CD のさまざまな情報を格納するカスタム クラスがあります。これらのDisksオブジェクトは、追加されたArrayList要素のみを持つことができるに格納されます。Disksタイトルの一致に基づいてこれらのオブジェクトを検索する方法を使用しています。ユーザー入力を受け取り、リストの各要素を調べて、ユーザー キーワードと CD のタイトルを比較します。完全に一致する場合は、その情報がユーザーに返されます。

HashMap を組み込むことで、この検索機構を少し変更したいと考えています。Disks各タイトル をトークン化し、キーワードのマッピング エントリを作成しようとしています。

次に例を示します。「Cars」という単語は、ArrayList要素のタイトルの位置 0、5、7 に表示されます。リスト [0,5,7] になる "Cars" のマッピング エントリを作成できるようにしたいと考えています。タイトルに「Cars」が含まれる位置 10に別の要素が追加された場合ArrayList、古いマッピング エントリを修正して、新しいリストが [0,5,7,10] になるようにするにはどうすればよいでしょうか?

最後に、ユーザーにタイトル キーワード「Loud Cars」を検索してもらいます。最初にインデックスで "loud" を見つけて [0,7,5] のリストを取得し (たとえば)、次に "cars" を見つけて [0,5,7,10] のリストを取得します。次に、これらのリストが交差する場所を見つけて、ArrayListこれらの場所に対応する要素を返します。

私の現在の HashMap 宣言は次のようになります。public HashMap<String, ArrayList<Integer>> map = new HashMap<>();ただし、Key が異なっていても、ArrayList に格納されている値は 1 つしかないため同じです。

Disks ArrayListは:public ArrayList<Disks> items;この ArrayList を HashMap の値に組み込む方法はありますか?

4

3 に答える 3

0

文字列を値にマッピングするたびに、Integer の新しい ArrayList を作成する必要があります。エントリを初めて使用するときは、新しいリストを作成し (文字列が null にマップされていることを確認する必要があります)、新しい Disk エントリが Disls の ArrayList に格納されるインデックスの値を ArrayList の ArrayList に追加します。整数。文字列が空でないリストにマップされるときはいつでも、インデックス (Disk ArrayList にある場所) を Integer の ArrayList に追加するだけです。

于 2013-11-12T00:15:34.100 に答える