Java 如何提取两个有序列表的非交集部分?
我想加入两个字符串列表。两个列表都有固定的顺序 问题:第二个列表部分包含第一个列表的“结束”。我永远不知道第一张清单的末尾有多少项位于第二张清单的顶部 例如: 第一份名单:Java 如何提取两个有序列表的非交集部分?,java,collections,Java,Collections,我想加入两个字符串列表。两个列表都有固定的顺序 问题:第二个列表部分包含第一个列表的“结束”。我永远不知道第一张清单的末尾有多少项位于第二张清单的顶部 例如: 第一份名单: testa testb testc testa testd testg 第二份名单: testa //from 1st testd //from 1st testg //from 1st textf testc testb testa 在这里,您可以看到第二个列表中的第一个元素是第一个列表中的“continued”。因此
testa
testb
testc
testa
testd
testg
第二份名单:
testa //from 1st
testd //from 1st
testg //from 1st
textf
testc
testb
testa
在这里,您可以看到第二个列表中的第一个元素是第一个列表中的“continued”。因此,我想从第二个列表中删除这3个项目,然后加入这两个列表
问:这种手术叫什么?可能已经有像apache commons CollectionUtils这样的框架可以执行这些操作了?我不知道它是如何调用的(虽然它看起来有点像,但有额外的限制),我认为您不会找到内置的方法。但你可以这样写:
list 1
长度n1
和list 2
长度n2
i=max(0,n1-n2)
开始,检查list1(i)==list2(n1-i-1)
i
,直到找到匹配项list1(i:n1)
和list2(0:n1-i-1)
-如果它们匹配,您已经找到了您想要的,否则返回3这可能会提高效率。您可以使用不允许DUP的中间结构,然后将其转储到列表中。