現在のプログラムのオブジェクト構造は、オブジェクトにオブジェクトのリストが含まれ、各オブジェクトにオブジェクトDoc
のリストが含まれるように編成されています。単語はドキュメントのテキスト内の位置によって識別され、その他の情報 (テキスト、単語ネットの意味など) も保存されます。Mention
Mention
Word
プログラムの処理中 (ユーザーの操作などを通じて)Word
内のオブジェクトMention
にアクセスし、値を変更できます (たとえば、その意味を更新します)。ユーザーとそれぞれMention
の対話が必要です。
ここで私が遭遇した問題はMention
、同じに属するいくつかの がいくつかの同じDoc
を共有している可能性があることですWord
(結局のところ、すべての単語は Doc にあります)。そのような Word が更新された場合、他の sにWord
含まれる対応するものをどのように更新すればよいでしょうか? Mention
つまり、これらWord
の はテキスト内のまったく同じ場所にあり、一緒に更新する必要がありますが、メンションには別々に保存されます。では、1 つの更新で他の更新をどのように変更すればよいのでしょうか。
私が使用したアプローチの 1 つは、Word
内部の aMention
が変更されたときに、(格納された参照から) すべての言及を取得し、それを含むいずれかDoc
の対応するものを更新するというものです。これには、更新ごとに Equals チェックを伴う for ループが必要であり、これは非常に多くの処理になります。Word
Mention
私が考える 2 番目のアプローチは、個別のWord
リストをMention
s に格納しないことです。には s の1 つのリストのみWord
が格納され、 s が に属するDoc
各Mention
インデックスはリストに格納されます。したがって、 を更新するときは、の参照から更新関数を呼び出してのリストを更新します。ただし、問題は、a の s のリスト全体を返す関数にあります。のリスト内の実際の s を選択する必要があるインデックスを使用して、 s の新しいリストを返す必要があります。これが必要なのは、内部のすべての が、直前に他の (複数の) によって変更された可能性があるためです。または、Word
Mention
Word
Doc
Doc
Word
Mention
Word
Word
Doc
Word
Mention
Mention
Word
更新され、更新をコピーします。Word
しかし、それでも内のすべての s を介して for ループが必要なMention
ため、依然として奇妙に思えます (リストを取得するたびに = 長い操作)。
私が聞きたいのは、この更新の問題に対するより良い解決策があるかどうかです. どんな助けでも大歓迎です:)必要に応じて、ここにコードの一部を追加します。