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 の値に組み込む方法はありますか?