0

現在のプログラムのオブジェクト構造は、オブジェクトにオブジェクトのリストが含まれ、各オブジェクトにオブジェクトDocのリストが含まれるように編成されています。単語はドキュメントのテキスト内の位置によって識別され、その他の情報 (テキスト、単語ネットの意味など) も保存されます。MentionMentionWord

プログラムの処理中 (ユーザーの操作などを通じて)Word内のオブジェクトMentionにアクセスし、値を変更できます (たとえば、その意味を更新します)。ユーザーとそれぞれMentionの対話が必要です。

ここで私が遭遇した問題はMention、同じに属するいくつかの がいくつかの同じDocを共有している可能性があることですWord(結局のところ、すべての単語は Doc にあります)。そのような Word が更新された場合、他の sにWord含まれる対応するものをどのように更新すればよいでしょうか? Mentionつまり、これらWordの はテキスト内のまったく同じ場所にあり、一緒に更新する必要がありますが、メンションには別々に保存されます。では、1 つの更新で他の更新をどのように変更すればよいのでしょうか。

私が使用したアプローチの 1 つは、Word内部の aMentionが変更されたときに、(格納された参照から) すべての言及を取得し、それを含むいずれかDocの対応するものを更新するというものです。これには、更新ごとに Equals チェックを伴う for ループが必要であり、これは非常に多くの処理になります。WordMention

私が考える 2 番目のアプローチは、個別のWordリストをMentions に格納しないことです。には s の1 つのリストのみWordが格納され、 s が に属するDocMentionインデックスはリストに格納されます。したがって、 を更新するときは、の参照から更新関数を呼び出してのリストを更新します。ただし、問題は、a の s のリスト全体を返す関数にあります。のリスト内の実際の s を選択する必要があるインデックスを使用して、 s の新しいリストを返す必要があります。これが必要なのは、内部のすべての が、直前に他の (複数の) によって変更された可能性があるためです。または、WordMentionWordDocDocWordMentionWordWordDocWordMentionMentionWord更新され、更新をコピーします。Wordしかし、それでも内のすべての s を介して for ループが必要なMentionため、依然として奇妙に思えます (リストを取得するたびに = 長い操作)。

私が聞きたいのは、この更新の問題に対するより良い解決策があるかどうかです. どんな助けでも大歓迎です:)必要に応じて、ここにコードの一部を追加します。

4

1 に答える 1