从两个 ListProperty 中删除所有重合项

Remove no coincidents from two ListProperty

我的目标是:实现两个 "identical" 列表,在尽可能短的时间内从两个列表中删除不重合的对象。

我取得的成就:两个相同的列表,删除了非重合项,但耗时太长。

我的问题是:

我有两个大列表(每个有 800k 条记录),这些列表中充满了对象(在这些对象上正确实现了 HashCode 和 Equals),我需要删除两个列表中不重合的记录。它可能只有 3-100 条记录(与 800k 寄存器相比不算什么)。

主要是性能问题,导致操作需要10多分钟。

这是我试过的:

我需要找到一种更快的方法来执行此操作,但无法弄清楚。

关于重复项:听起来很奇怪,但对于我的程序来说,如果 2 个对象具有相同的 "name" 但在我需要的其他属性中可能具有不同的值,则它们是相等的。

不理解名称相等但值不相等的所有原因.. 甚至不理解列表 A 是否具有 "foo",列表 B 是否具有 2x "foo" 如果你想保留所有 "foo"...

这是一个想法.. 将 "name" 的哈希集创建为同名对象数组...现在您可以使用 retainAll 然后从哈希集值快速重建原始集合。