从另一个性能中减去一个ArrayList

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个性能中减去一个ArrayList相关的知识,希望对你有一定的参考价值。

我想从另一个中减去一个ArrayList

@ToString
@EqualsAndHashCode
class Person
{
    PersonGender gender
    String name
    String surname
}

static def substractList(ArrayList<Person> listOne, ArrayList<Person> listTwo) {
    listOne.minus listTwo
    // listOne has 200k elements
    // listTwo has 170k elements
}

代码已运行40分钟,但无法完成。 如何让执行更快?

答案

Person是否实施Comparable?如果是这样,Groovy将进行1,046,089次操作。如果没有,它将采取较慢的路径并进行34,000,000,000次操作(see the code for minus here

所以你应该能够通过使Person实现Comparable来使它快34,000倍Groovy然后将使用TreeSet;将所有listOne添加到其中,然后删除所有listTwo

如果你不能使它具有可比性...嗯......你能预先对列表进行排序吗?

如果是这样,我们可能会想出一个同时遍历两个列表的算法......这可能会更快......

以上是关于从另一个性能中减去一个ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个日期中减去一个日期? [复制]

当我们从另一个char整数中减去一个char整数会发生什么?

从另一个活动的活动中的片段传递数据

在SVG中从另一个圆中减去一个圆

使用意图从另一个片段调用一个片段

创建一个触发器,从另一个表的列中减去 1