したがって、オブジェクトをディスプレイに追加するこのメソッドがあります。ディスプレイが最初に開かれると、既存のすべてのオブジェクトが 1 つずつ HashMap に追加されます。その後、ユーザーは一度に 1 つずつさらに追加して、新しいオブジェクトを HashMap に入れることができます。
Key は Object で、Value は Object とそれに関する他のいくつかの変数を含むカスタム クラスです。
これはすべて正常に動作しますが、ディスプレイが閉じられて新しいインスタンスが開かれると、すべてのオブジェクト (使用中にユーザーによって作成および保存されたものを含む) が再ロードされるはずですが、何らかの理由で新しく作成された1 つは、containsKey を実行するときに不正確な一致を検出します。
一致するはずがないのになぜ一致を見つけるのか、私にはよくわかりません。containsValue を実行すると、誤った一致は見つかりません (正常に動作します) が、HashMap.put(K, V) を使用すると、containsKey の誤検出を返したものをオーバーライドするため、役に立ちません。 .
コードが行うのは、各オブジェクトを反復処理することだけです。HashMap に既にキーが含まれているかどうかを確認し、含まれている場合はキーの値を返します。そうでない場合は、メソッドに渡されたキーに基づいて値を作成し、それをハッシュマップに配置します。
申し訳ありませんが、コードを投稿することはできません。それがなければ助けられない場合は理解していますが、それは仕事のためであり、たとえそれが単なるスニペットであっても、コードを投稿してもよいかどうかわかりません.
ヘルプやガイダンスをいただければ幸いです。情報が見つかるかどうかを確認するために、まだ Google を検索しています。
編集:解決策を見つけました。ハッシュコード関数は、本質的にインデックスである値を返していました。問題は、最初のオブジェクトの後にリセットされたため、新しく追加されたオブジェクトがゼロから開始され、既存のオブジェクトが上書きされることでした。ハッシュコードとその動作を変更しました。
みんな助けてくれてありがとう。