我在当前程序中的对象结构是这样组织的,一个Doc
对象包含一个对象列表Mention
,每个Mention
对象都包含一个对象列表Word
。单词通过它们在文档文本中的位置来识别,并且还存储一些其他信息(它的文本,它的 wordnet 意义......)
在程序的处理中(通过用户交互等)Word
对象里面有一个Mention
可以被访问和修改的值(例如,更新它的意义)。与每个用户交互Mention
是一项要求。
我在这里遇到的问题是Mention
,属于同一个的几个 sDoc
可能共享一些相同Word
的 s(毕竟所有的词都在 Doc 中)。那么当这样一个 Word 更新时,我应该如何更新Word
other 中包含的对应Mention
呢?换句话说,这些Word
s在文本中的确切位置相同,应该一起更新,但它们分别存储在Mentions中。那么一个更新应该如何改变其他更新呢?
我使用的一种方法是,当 aWord
内部Mention
被修改时,我检索所有提及(从存储的Doc
引用中),然后在包含它Word
的任何内容中更新相应的内容。Mention
这需要对每个更新进行 Equals 检查的 for 循环,这是相当多的处理。
我想到的第二种方法是不在 s 中存储单独的Word
列表Mention
。只有一个Word
s 列表存储在 中Doc
,并且在每个s 中属于 sMention
的索引存储在一个列表中。所以在更新 a 时,我会从' 的引用中调用一个更新函数来更新' 的列表。但是,问题在于返回 a 的整个s列表的函数。我必须返回一个新的 s 列表,使用我必须在列表中选择实际s的索引。这是必需的,因为其中的所有s 都可能在不久前被其他一些(s)修改过。或者,我可以检查是否Word
Mention
Word
Doc
Doc
Word
Mention
Word
Word
Doc
Word
Mention
Mention
Word
已更新并复制更新。但它仍然需要一个 for 循环遍历Word
s 中的所有 s Mention
,所以它仍然看起来很奇怪(每次检索列表 = 长操作)
我想问的是,这个更新问题是否有更好的解决方案。非常感谢任何帮助:) 如果有必要,我将在此处添加部分代码。